国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

.Net開發(fā)平臺研究(一

2024-07-10 13:07:38
字體:
供稿:網(wǎng)友
.net開發(fā)平臺研究



總結(jié):

.net開發(fā)平臺的發(fā)布標志著近十年來微軟開發(fā)平臺第一個重大的轉(zhuǎn)變。這個開發(fā)平臺包括一個用于加載和運行應(yīng)用程序的新的軟件基礎(chǔ)結(jié)構(gòu)(.net framework和asp.net),一個新的開發(fā)環(huán)境(visual studio .net),以及支持該結(jié)構(gòu)的編程語言。

微軟希望隨著這個新平臺的發(fā)布,評論不再將這個平臺作為朦朧的軟件,而且開發(fā)者也將發(fā)現(xiàn)該平臺使得windows上web應(yīng)用程序(尤其是web service)的開發(fā)更為容易。這樣或許會使更多的開發(fā)者擁護公司的操作系統(tǒng)和服務(wù)器產(chǎn)品,并將他們從與java平臺的競爭中吸引過來。

微軟的客戶可以將該平臺用作應(yīng)用程序的更可靠、更安全和更統(tǒng)一的標準,而微軟的合伙伙伴則可以通過幫助為該平臺創(chuàng)建早期的勝利來加強與公司的聯(lián)系。不過,無論是客戶還是合伙廠商都應(yīng)該意識到,新的平臺要求他們從根本上掌握新的應(yīng)用程序編程接口和編程語言,而且它能將他們鎖定在微軟的操作系統(tǒng)和服務(wù)器產(chǎn)品上。



1. 名詞簡介:

微軟發(fā)布了.net開發(fā)平臺,這是自1993年7月隨著windows nt3.0出現(xiàn)的win32 api后微軟軟件開發(fā)平臺的第一次大升級。比起win16來,win32提供了更多功能強大的api,但沒有對工具和技術(shù)進行引人注目的改變。與之不同的是,.net開發(fā)平臺在開發(fā)者用以創(chuàng)造應(yīng)用程序的工具和技術(shù)上做了根本的改變。

.net開發(fā)平臺使得開發(fā)者創(chuàng)建運行在internet information server (iis)(互聯(lián)網(wǎng)信息服務(wù)器)web服務(wù)器上的web應(yīng)用程序更為容易,它也使創(chuàng)建穩(wěn)定、可靠而又安全的windows桌面應(yīng)用程序更為容易。.net開發(fā)平臺包括以下內(nèi)容:

·.net framework(架構(gòu)),包括:common language runtime(clr)(通用語言運行環(huán)境),這是用于運行和加載應(yīng)用程序的軟件組件;新的類庫,分級組織了開發(fā)者可以在他們的應(yīng)用程序中用來顯示圖形用戶界面、訪問數(shù)據(jù)庫和文件以及在web上通信的代碼集。

·.net開發(fā)者工具,包括:visual studio .net integrated development environment (ide)(visual studio .net集成開發(fā)環(huán)境),用來開發(fā)和測試應(yīng)用程序;.net編程語言(例如visual basic .net和新的visual c#),用來創(chuàng)建運行在clr下并且使用類庫的應(yīng)用程序。

·asp .net,一個取代以前的active server pages (asp)的特殊類庫,用來創(chuàng)建動態(tài)的web內(nèi)容和web服務(wù)器應(yīng)用程序,這些都將采用諸如html、xml和simple object access protocol(soap)(簡單對象訪問協(xié)議)等internet協(xié)議和數(shù)據(jù)格式。

(有關(guān)該平臺組件的概貌,請參看“.net開發(fā)平臺”示意圖。)





2. 微軟為什么需要一個新的開發(fā)平臺?

微軟希望能夠藉此平臺保留住它龐大的windows開發(fā)用戶的基礎(chǔ),否則由于java向開發(fā)者所做的硬件與操作系統(tǒng)(oss)無關(guān)性的承諾,這些用戶群可能會轉(zhuǎn)向其它的平臺。開發(fā)者本身不會給微軟(或任何其他針對此事的公司)帶來很多收益。不過,windows程序員是公司內(nèi)對微軟產(chǎn)品(例如windows本身)的極大的支持力量,而商用軟件的開發(fā)者形成了向客戶發(fā)售微軟產(chǎn)品的重要渠道。如果微軟可以讓開發(fā)者在新的.net開發(fā)平臺下寫應(yīng)用程序的話,那么就會有更多的公司購買windows server和.net enterprise server (.net企業(yè)服務(wù)器),包括sql sever 、exchange 、share point、commerce server以及biztalk等。

微軟尤其推重.net開發(fā)平臺用于開發(fā)一種新型的應(yīng)用程序:web services, 或者和web上其他應(yīng)用程序交換xml格式數(shù)據(jù)的服務(wù)器應(yīng)用程序。(有關(guān)web services的概貌,請參看“web services:是什么與為什么”。)微軟認為web services(為此公司已注冊了名為“xml web services”的商標)是公司將現(xiàn)有的、孤立的應(yīng)用程序集成到更大的商務(wù)(以及b2b)系統(tǒng)中的一種成本低而效用高的方法。微軟希望web services成為吸引程序員在新的平臺和產(chǎn)品上開發(fā)的“必有”的應(yīng)用程序類型,正如帶有圖形用戶界面的桌面應(yīng)用程序吸引程序員在早期版本的windows上進行開發(fā)那樣。微軟本身也計劃使用該平臺開發(fā)它自己的公共web services(稱作.net my services),它將給internet上的客戶提供數(shù)據(jù)存儲以及其他的功能。



.net開發(fā)平臺



.net開發(fā)平臺是一組用于建立web服務(wù)器應(yīng)用程序和windows桌面應(yīng)用程序的軟件組件,用該平臺創(chuàng)建的應(yīng)用程序在common language runtime(clr)(通用語言運行環(huán)境)(底層)的控制下運行。clr是一個軟件引擎,用來加載應(yīng)用程序,確認它們可以沒有錯誤地執(zhí)行,進行相應(yīng)的安全許可驗證,執(zhí)行應(yīng)用程序,然后在運行完成后將它們清除。類庫集提供了使應(yīng)用程序可以讀寫xml數(shù)據(jù)、在internet上通信、訪問數(shù)據(jù)庫等的代碼。所有的類庫都建立在一個基礎(chǔ)的類庫之上,它提供管理使用最為頻繁的數(shù)據(jù)類型(例如數(shù)值或文本字符串)的功能,以及諸如文件輸入/輸出等底層功能。

web服務(wù)器應(yīng)用程序通常依賴于asp.net,一個處理web請求的服務(wù)器端的庫。asp.net又依賴一個用于發(fā)送和接收soap信息的web services庫,以及一個用于以瀏覽器接收用戶輸入并動態(tài)地生成web頁面以示響應(yīng)的web用戶接口(ui)(有時稱作web 表單)。windows桌面應(yīng)用程序通過使用win表單庫(也稱作windows 表單)可以顯示一個圖形ui。

最后,visual studio .net提供了一個用于在該平臺上創(chuàng)建應(yīng)用程序的圖形integrated development ewironment(ide)(集成開發(fā)環(huán)境)。程序員可以使用一種或多種.net編程語言,來編寫他們的代碼,例如微軟自己的visual basic .net(vb.net),visual c++, visual c#和jscrjpt .net等。大量其它的.net編程語言可以從第三方廠商獲得。







.net framework核心:

所有在.net開發(fā)平臺上創(chuàng)建的應(yīng)用程序運行都需要運行兩個核心塊:

common language runtime(clr)(通用語言運行環(huán)境),這是一個軟件引擎,用來加載應(yīng)用程序,確認它們可以沒有錯誤地運行,進行相應(yīng)的安全許可驗證,執(zhí)行應(yīng)用程序,然后在完成后將它們清除。

.net framework類庫,向程序員提供所需用來編寫在clr的控制下運行的代碼的軟件組件。它們按照單一有序的分級組織提供了一個龐大的功能集——從文件系統(tǒng)到對xml功能的網(wǎng)絡(luò)訪問的每一樣功能。

web服務(wù)器應(yīng)用程序也可以使用asp .net,這個類庫將在做詳細解釋。桌面應(yīng)用程序不需要asp .net。



clr有兩個主要的目標:

·提高應(yīng)用程序的穩(wěn)定性和安全性

·減少應(yīng)用程序開發(fā)者所必須寫的冗長而又易出錯的底層代碼的容量

這兩個目標類似于諸如sun和ibm等廠商試圖用unix和主機上的java平臺去解決的問題。為了解決windows上的這些問題,clr對加載和執(zhí)行應(yīng)用程序的編程模型做了根本的改變。









3. web services:是什么與為什么

web services是一個軟件組件,它通過將消息以xml格式進行編碼,并將消息通過標準的internet協(xié)議(例如hypertext transfer prorocol (http)(超文本傳輸協(xié)議))發(fā)送出去來與其它的應(yīng)用程序進行通信。一個web services類似于這樣一個web站點:沒有用戶接口,向應(yīng)用程序而非用戶提供服務(wù)。web services不從瀏覽器獲得請求并返回相應(yīng)的web頁面,而是從應(yīng)用程序接收xml格式的請求消息,執(zhí)行任務(wù),然后向應(yīng)用程序返回xml格式的響應(yīng)消息。

ibm和微軟一致提倡將soap作為一種用于web services的消息標準。一條soap消息如同一封信,由一個基于xml格式的“信封”和載有消息數(shù)據(jù)的“正文”兩部分組成,“信封”部分包含一個指明消息接收者地址的頭部和一系列投遞選項(例如加密信息)。

(微軟喜歡將此編程模型稱作“xml web services”——采用“xml”意在強調(diào)其開放性?!沁@個基于一套world wide web consortium (w3c)協(xié)議標準的模型,業(yè)界習(xí)慣上簡單稱其為“web services”。)

微軟和ibm等其他供應(yīng)商提倡將web services作為用于internet上的互連應(yīng)用程序通信的程序設(shè)計模型。這些公司相信通過internet相互連接的應(yīng)用程序,將增強與它們的合作供應(yīng)商和客戶協(xié)同工作的商務(wù)能力。通過在一個現(xiàn)有的公司應(yīng)用程序的頂層創(chuàng)建一個web services層,各個組織可以允許外部系統(tǒng)通過internet(或企業(yè)intranet)調(diào)用應(yīng)用程序的功能,但卻不必修改應(yīng)用程序本身。例如,有幾家公司正在創(chuàng)建web services,來充當(dāng)駐留在主機內(nèi)的訂單一入口應(yīng)用程序的前端,這允許客戶的訂貨系統(tǒng)通過internet提交訂單。作為公司內(nèi)整合由各個部門獨立開發(fā)的應(yīng)用程序,以降低伴隨公司合并與購并而來的it整合費用的方法,將web services放在現(xiàn)有應(yīng)用程序的頂層相當(dāng)重要。

微軟也希望使用web services進入服務(wù)供應(yīng)商領(lǐng)域,通過internet向付費客戶提供必要的服務(wù)。計劃中的服務(wù)首要的是.net my services,一套由微軟管理的數(shù)據(jù)存儲web services,包括由單個用戶輸入的個人信息,例如信用卡號和日歷安排。桌面和web服務(wù)器應(yīng)用程序,如果獲得了用戶的許可,將通過web services協(xié)議從那些internet上的數(shù)據(jù)庫中取回信息。





4. clr如何工作?

一個應(yīng)用程序是作為稱作匯編的文件或文件集進入clr的。這個匯編包是microsoft intermediate languagl (msil)代碼,clr將其翻譯成可執(zhí)行的本機代碼。由于可以對從msil到本機代碼的應(yīng)用程序翻譯的控制,使得clr可以管理應(yīng)用程序的執(zhí)行并且防止各種問題的發(fā)生,因此也就有了術(shù)語可控制代碼。

除了msil代碼,匯編還包含有詳細描述了msil代碼正確執(zhí)行所需的各種相關(guān)數(shù)據(jù)類型的元數(shù)據(jù)。最后,匯編還包括一個清單——一個列出了匯編中所有文件和軟件組件的文檔,該文檔還指出clr在哪里可以找到具有應(yīng)用程序運行所需組件的其它匯編。

為了加載一個應(yīng)用程序,clr使用匯編的清單來確定應(yīng)用程序所需的匯編的正確版本。然后clr檢查應(yīng)用程序的全部匯編——即,msil代碼本身與描述它的元數(shù)據(jù)——從而確認代碼是“類型安全”的,這表明它只執(zhí)行對恰當(dāng)數(shù)據(jù)類型的恰當(dāng)?shù)牟僮鳎ㄒ簿褪钦f,它不會允許開發(fā)者使用一個整數(shù)作為一個函數(shù)指針),而且它只訪問經(jīng)過授權(quán)可以訪問的內(nèi)存位置。

接下來clr加載應(yīng)用程序的匯編中的msil,并且在此過程中,收集有關(guān)匯編的“證據(jù)”,例如:

·它是從哪里下載或安裝的

·它需要執(zhí)行什么功能(也就是說,它是否需要寫文件或發(fā)e-mail)

·什么用戶試圖運行它

· 匯編是否擁有來自信任的開發(fā)者的數(shù)字簽名,以及進行數(shù)字簽名后匯編是否有改動。



執(zhí)行控制代碼

common language runtime (clr)(通用語言運行環(huán)境)組件(以灰色顯示)加載并運行應(yīng)用程序。

(1)class loader(類加載器)將應(yīng)用程序的匯編加載到內(nèi)存中。匯編包括microsoft intermediate language[msil]代碼、描述應(yīng)用程序的匯編中的軟件組件的元數(shù)據(jù),以及其他應(yīng)用程序所需的組件。

接下來,class loader使用應(yīng)用程序匯編的元數(shù)據(jù),試圖加載任何應(yīng)用程序所需的組件的支持匯編。例如,它可能加載包含一個桌面應(yīng)用程序所需的圖形用戶接口(gui)控制的匯編。class loader 使用versioning polily(版本政策)(由應(yīng)用程序的開發(fā)者或者系統(tǒng)管理員指定)采確定加載它所支持的哪些版本匯編。例如,一個versioning policy可能要求只能使用特定版本的gui組件,即使有更多最近的版本可以利用。這消除了組件版本問題,這樣的問題在過去十分普遍地存在于windows應(yīng)用程序中。

(2)一旦應(yīng)用程序和受支持的匯編加載后,verifier就得檢查它的內(nèi)容以確保它是類型安全的(type-safe),并且確定對于應(yīng)用程序適當(dāng)?shù)陌踩S可。這是加強安全過程的第一步。

(3)本機編譯器將msil轉(zhuǎn)換為可控制的本機代碼,這是處理器相關(guān)代碼,它知道如何與clr提供的服務(wù),例如碎片整理(聲明內(nèi)存不再為應(yīng)用程序所用)或clr安全系統(tǒng)(將增強應(yīng)用程序的安全許可),進行行交互。



這些證據(jù)構(gòu)成了.net framework中的安全要素,使得clr可以判斷是否運行應(yīng)用程序,以及運行時需要具有什么許可。

接下來,clr將msil代碼翻譯成處理器可以執(zhí)行的本機代碼。(微軟將此稱為“可控制的本機代碼”,以與“不可控制的本機代碼”相區(qū)分,后者是用c++這樣較老的語言寫的,clr對其沒有控制。)一項稱為just-in-time(jit)編譯的能力使得clr能將翻譯過程延遲至真正需要它時,這樣就使clr避免翻譯不常用的代碼。(關(guān)于這個過程的圖解說明,請參看 “執(zhí)行可控制代碼”示意圖。)

最后,clr監(jiān)控著翻譯代碼的運行,并且定期清空應(yīng)用程序釋放的內(nèi)存(使用一個稱作“碎片整理”的進程)。



clr的好處:

clr通過下列方法增強了應(yīng)用程序的可靠性:



它減少了不同版本組件間的沖突。clr可以幫助避免在一臺機器上安裝相沖突的軟件組件時發(fā)生的問題——現(xiàn)在的windows應(yīng)用程序如果試圖加載不正確版本組件時可能失敗。當(dāng)crl加載一個應(yīng)用程序時,它使用元數(shù)據(jù)和匯編清單來確保它加載了所有組件的正確版本。例如如果應(yīng)用程序需要訪問數(shù)據(jù)庫,clr就使用清單中的信息來尋找并加載版本正確的數(shù)據(jù)訪問組件。系統(tǒng)也允許并列安裝多個版本的組件。

它減少了由于通常的編程錯誤所帶來的bug和安全漏洞的數(shù)量。clr監(jiān)控代碼以確保它不會有通常的編程錯誤,這些錯誤可能導(dǎo)致程序執(zhí)行不正確的功能,例如試圖使用一個整數(shù)作為函數(shù)指針,強行將數(shù)值型數(shù)據(jù)存放到分配給文本數(shù)據(jù)的位置,或者是載入數(shù)據(jù)時覆蓋代碼(由于緩沖溢出)。減少來自這些通常的編程錯誤的bug意味著應(yīng)用程序不但運行得更可靠,而且攻擊者有機可乘的漏洞和弱點也更少。

增強的安全性能使惡性代碼的運行更為困難。因為clr可以理解每個應(yīng)用程序的代碼的身份和來源,所以它可以決定應(yīng)用程序是否被允許執(zhí)行特定的任務(wù)(例如讀寫本地存儲器或者發(fā)送e-mail)。這給現(xiàn)在的安全模型增加了另外一層保護,在現(xiàn)在的安全模型中應(yīng)用程序在運行它的用戶帳號的安全背景下運行(例如,管理員機器上所有的應(yīng)用程序都用管理員級的許可在運行)。

內(nèi)存泄漏更少。如果內(nèi)存和組件分配給一個應(yīng)用程序使用,但卻得不到釋放,這樣就會導(dǎo)致系統(tǒng)超出內(nèi)存運行,要么會沖擊系統(tǒng),要么就需重新啟動、釋放內(nèi)存。clr的內(nèi)存管理和碎片整理可大大降低這種問題發(fā)生的可能性。

組裝函數(shù)(plumbing functions)減少了bug,同時也節(jié)約了開發(fā)者的時間。最后,clr提供了許多與內(nèi)存和對象管理、數(shù)據(jù)編組,以及線程(thread)相關(guān)的低級的,或組裝函數(shù)。這不僅通過降低bug的發(fā)生可能性而建立了更好的可靠度,而且還使得程序員能將精力集中于用于他們特定的應(yīng)用程序的“行業(yè)”代碼上,而不必重新實現(xiàn)標準的windows函數(shù)。



從windows的過渡

最后,clr執(zhí)行的一項非常重要的功能是在可控制代碼和不可控制代碼(即脫離clr運行的傳統(tǒng)的windows代碼)間起中介作用。特別地,它使開發(fā)者可以將新的.net代碼與現(xiàn)存的windows庫和com組件結(jié)合起來,并將一個應(yīng)用程序逐漸地從老平臺遷移到新平臺上來。(請參看“混合可控制代碼與不可控制代碼”示意圖)。

不過,需要指出的是,不可控制代碼脫離clr的控制而運行,因此有可能沖擊應(yīng)用程序,泄露內(nèi)存,或者通過緩沖溢出打開安全漏洞。一個.net應(yīng)用程序只是和它的最弱環(huán)節(jié)——它的不可控制代碼一樣強壯。

類庫統(tǒng)一windows api
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 雅安市| 胶州市| 玉龙| 瑞安市| 甘洛县| 石狮市| 凤山县| 专栏| 肇源县| 红安县| 会宁县| 洞口县| 光泽县| 调兵山市| 龙井市| 和林格尔县| 泰安市| 平乡县| 吴川市| 卢龙县| 华亭县| 义马市| 介休市| 肥西县| 东阿县| 万年县| 沾化县| 稷山县| 湟源县| 仁化县| 黔江区| 凤凰县| 建德市| 广德县| 抚宁县| 临安市| 乌兰浩特市| 旺苍县| 皮山县| 同心县| 皮山县|