.NET架構的核心開發技術

iDotNetSpace發表於2010-03-17
不可否認,應用軟體的開發正在經歷一次鉅變 —— 將最終增強開發人員的生產力並開啟一道通向全新概念的應用程式的大門。
 
新型的開發模式正逐漸被推廣,將分發軟體演變成一種服務還有待於所有開發人員的共同努力,而網際網路卻將徹底改變應用程式的開發模式和配置方式。
傳統上,軟體開發人員通過整合本地系統服務的方式開發應用程式。這種模型使開發人員有權使用一整套豐富的開發資源,精確控制應用程式的效能。

如今,開發人員在很大程度上已掙脫了這種模式的束縛,致力於構建具有複雜結構的 n層系統,這種系統能將網路中各處的眾多的應用程式進行整合,並大大提升應用程式的價值。這樣,開發人員便可集中精力挖掘軟體獨特的商業價值,而不必日夜為如何構建基本結構傷腦筋了。令人欣喜的局面將應運而生:軟體投放市場的時間大大縮短、開發人員的程式設計效率明顯提高,最為根本的是開發出質量上乘的軟體。

我們正在進入計算機發展的下一個階段 ——基於 Internet的階段,特別是基於 Internet核心技術 ——XML擴充標記語言。儘管多層應用程式開發將焦點集中在建造大型企業級應用程式上,但現在 XML使得能夠建立可用於任何人、任何場所的大型應用程式。它擴大了應用程式的使用範圍。這樣,軟體就不是隻能從 CD上安裝的某種東西,而是一種服務 ——就像呼叫服務或者計費電視一樣,可以通過通訊媒體來預訂。

這一切,是通過將緊密聯接的、高效的 n層計算技術與面向訊息的、鬆散聯接的 Web概念相結合來實現的。我們將這種計算風格稱為 Web Service( Web服務),它的出現標誌著人類已經邁入應用程式開發技術的新紀元。 Web服務是一種應用程式,它可以使用標準的網際網路協議,像超文字傳輸協議 (HTTP)和 XML,將功能綱領性地體現在網際網路和企業內部網上。

我們也可將 Web服務視作 Web上的元件程式設計。

從理論上講,開發人員通過呼叫 Web應用程式設計介面( API),將 Web服務整合進他們的應用程式,就像呼叫本地服務一樣。兩者區別在於前者能夠通過 Internet傳送到某個遠端系統的服務上。例如,像微軟護照( Microsoft Passport)這樣的服務,可以給開發人員提供應用程式身份確認的功能。通過對護照服務程式設計,開發人員就可以利用護照服務的基礎體系,實現維護使用者資料庫,確信服務開啟和執行以及正確地備份等等功能。

鬆散聯接

跨越網路的分佈應用程式邏輯的概念並不是一個新名詞,但跨越 Web的分佈和整合應用程式邏輯的概念卻是。

此前,像微軟的 DCOM (Distributed Component Object Model )、 Object Management Group公司的 CORBA ( Common Object Request Broker Architecture )以及 Sun公司的 RMI(Remote Method Invocation )這些分散式物件模型被稱為分佈應用程式邏輯。運用這些系統結構,雖然服務放在遠端系統上,開發人員仍然可以像原來本機程式設計那樣維護和豐富應用程式的功能。

但這種系統的問題是不能擴充套件到 Internet。因為該體系的基礎是伺服器上的客戶端和伺服器的緊密聯結。這意味著兩者必須是同質的基礎體系,但也就常常意味著這種系統是非常脆弱的,如果有任何一端介面發生變化,另一端程式必然就會被中斷。舉個例子,如果伺服器應用程式的介面改變了,那麼客戶端也將會失效。

開發中要求有一個緊密聯接的系統這本身沒有錯,而且許多應用程式也一直就是建立在這些系統上的。但最終,隨著時間的流逝,這種模型是不會擴充套件的。因為眾多公司企業要求相互溝通,這很難保證會有一個統一的系統,同樣也很難保證,你的客戶的伺服器會有你所需要的完全一致的系統,你甚至都不可能猜想到它所用的是什麼作業系統、什麼物件模型和什麼程式語言。

相反, Web服務的聯接非常鬆散。這就意味者你可以在聯接的任何一端任意改變介面,而應用程式可以不受影響地照常工作。從技術上說,這主要是由於使用了擁有穩固效能的基於訊息的非同步技術,如像 HTTP、 SMTP等 Web標準協議。而且最重要的是, XML可以幫助實現其通用性。

作為一個巨集偉的計劃, .NET的路還很長。今後的發展無論是崎嶇坎坷還是一片光明,在對新技術和 IT產業的推動上,微軟都是功不可沒的。

訊息系統將通訊的基本單元打包進自描述的、運用於網路通訊層的包(被稱做訊息)。訊息系統和分散式物件系統的關鍵區別在於,傳送者需要對接收者的系統瞭解多少。使用分散式的物件系統,傳送者需要幫助接收者考慮許多問題,比如應用程式將如何啟用和解除安裝、呼叫的是什麼介面等等。

另一方面,訊息系統在通訊層上達成協議。傳送者只需考慮的是接收者能夠知道資訊正被髮送。傳送方不需要了解一旦訊息被收到後將會如何處理,也不需要對傳送方和接收方之間作任何考慮。

在通訊層上達成協議的優勢是顯而易見的。例如,協議能夠使接收方隨時作修改而無須中斷髮送方,只要該協議始終明白是同一條訊息。接收方不用中斷任何當前應用程式,可以自由升級和改進。更進一步說,就是傳送方不用要求任何特殊的軟體就可以和接收方交談,只要他傳送的是符合格式的資訊,接收方就可以作出應答。

XML 的通訊基礎: SOAP

建造跨越 Web的 Web服務的工作和非同步系統的關鍵是使用統一的資料說明格式,這就是 XML。特別說明的是, Web伺服器在三方面需要 XML來實現:基礎語言、服務說明以及服務發現。

● SOAP :系統在底層需要有統一語言,特別地,應用程式相互通訊需要建立一套規則來說明如何表示不同資料型別(如整數和陣列),如何表示命令(如進行資料處理)。同時,應用程式在需要時還可以擴充這種語言。簡單物件存取協議 SOAP( Simple Object Access Protocol),這是 XML的一種實現,代表了一組如何表示和擴充資料和命令的規則集。
● WDSL(Web Services 描述語言 ) :一旦應用程式有了如何表述資料和命令的基本規則,他們就需要如何描述可以接收的特定資料和命令。應用程式只是宣告如何接收整數是不夠的,他們必須用明確的方法宣告。如給你兩個整數,把它們相乘。 WDSL是一種 XML語法,開發人員和開發工具可以用它來表示 Web服務的功能。
● SOAP Discovery :最後需要一組規則來定位服務的描述 ——對於開發者和開發工具在什麼地方可以發現一個 Web服務。 SOAP Discovery規範提供了一組規則讓開發者和開發工具可以自動發現 Web服務的描述。 
一旦這些準備好了,開發者可以方便地發現 Web 服務 ,把它作為一個物件整合進他們的應用程式,並使應用程式和 Web服務相互通訊。

.NET 框架 :Web服務引擎

很顯然,許多基本結構都需實現上述程式對開發人員和使用者的透明化。 .NET框架( .NET Framework)提供此基本結構。從 .NET框架角度看,所有元件都可以是 Web服務,而 Web服務也僅是一種元件。實際上, .NET框架提取出微軟元件物件模型 (COM)的精華,將它們與鬆散聯接計算的精華有機地結合在一起,生成了強大、高效的 Web元件系統:簡化程式設計師的 “管道 ”操作,深入地整合了安全性,引進了基於網際網路的作業系統,極大地改善應用程式的可靠性和可擴充套件性。

.NET 框架由三個主要部分組成:通用語言執行庫、一套層次結構的統一類庫和一個被稱為 ASP+的高階 ASP版本。

有關 .NET的許多東西讓人印象深刻,尤其是微軟充分傳達出的對網際網路作為未來主要技術平臺的首肯,和在某些方面對公開的標準的歡迎。

.NET 的確牽動著每個人的猜測 ……

1. 通用語言執行庫

除了通用語言執行庫的字面含義外,在開發階段和執行過程中它還扮演著另一個角色。在元件執行時,執行庫負責管理記憶體分配、啟動和中止執行緒和程式、強化安全係數,同時還調整任何該元件涉及到的其他元件的附件配置。在開發階段,執行庫的角色稍微有點變化:因為很多方面可以自動實現(例如記憶體管理等)。執行庫可以使開發過程變得非常簡單,特別是同今天的 COM程式設計相比更是如此。特別典型的是,像 Reflection>這樣的特性可以極大地縮小開發人員將商業邏輯轉化成一個可重複使用的元件而不得不編寫的程式碼數量。 
 
執行庫對於程式語言來說並不是新鮮的東西。實際上每一種程式語言都已包含一個執行庫。 Visual Basic開發系統有最明顯的執行庫(正規名字為 VBRUN), Visual C++也有一個 MSVCRT,此外,像 Visual FoxPro、 Jscript、 SmallTalk、 Perl、 Python和 Java等等都如此。 .NET框架的關鍵角色就是它提供了一個跨所有程式語言的統一環境。  

2. 統一程式設計類 

.NET 框架類為開發人員提供了一套可以使用的統一的物件導向、非同步、層次結構的可擴充套件類庫。現在, C++的使用者使用 Microsoft Foundation Classes, Java程式設計師使用 Windows Foundation Classes, Visual Basic的使用者使用 Visual Basic APIs。微軟用 .NET框架統一了這些不同的框架。結果是,開發人員不用非去學多個框架來完成自己的工作。而且,通過建立一套跨程式語言的通用 API, .NET框架可以實現跨語言繼承、糾錯處理以及程式除錯。實際上,從 JScript. 到 C++的所有程式語言,對於 .Net框架都是相互等同的,開發人員可以自由地選擇他們想使用的任何語言。 

.NET 是一種全新的平臺,它將對現有的所有程式碼產生影響。蓋茨說: “微軟所有的產品都會被涉及。我們的整個戰略是圍繞這個平臺展開的。 ” 

3.ASP+ 

ASP+ 是使用 .NET框架提供的類庫構建而成的,它提供了一個 Web應用程式模型,該模型由一組控制元件和一個基本結構組成。有了它, Web應用程式的構建變得非常容易。開發人員可以直接使用 ASP+控制元件集,該控制元件集封裝了公共的、用於超文字標識語言 (HTML)使用者介面的各種小元件(諸如文字框、下拉選單等等)。實際上,這些控制元件執行在 Web伺服器上,它們將使用者介面轉換成 HTML格式後再傳送給瀏覽器。在伺服器上,控制元件負責將物件導向的程式設計模型呈現給 Web開發人員,這種程式設計模型能提供物件導向的程式設計技術擁有的豐富功能。 ASP+還提供一些基本結構服務(諸如會話狀態管理和程式迴圈),這些服務進一步減少了開發人員要編寫的程式碼量,並使應用程式的可靠性得到了大幅度提高。 ASP+還允許開發人員將軟體作為一項服務進行傳送。通過使用 ASP+ Web服務功能, ASP+開發人員只需進行簡單的業務邏輯程式設計,而由 ASP+基本結構負責通過 SOAP傳送服務。 

儘管 ASP+還未正式發行,但它已在改進應用程式功能方面創造出了令人難以置信的奇蹟:在現有基於 ASP的應用程式效能基礎上,效能優化了三倍之多,更為激動人心的是生產效率再度攀升。 

.NET 框架的核心部分 

.NET 框架有幾個要素值得一提。首先是它的安全系統和配置系統。這兩個系統協同工作,有力地遏止了執行不安全程式碼的可能性,並大幅度減少了號稱 “DLL Hell”的對應用程式進行配置時所面臨的挑戰。 

安全系統是一個高度細化、基於事實的系統,它賦予開發人員和管理員多種程式碼處理許可權(而不僅僅是 “on”或 “off”)。將來,還會根據程式碼本身的核心要素來決定如何實施上述許可權。 

例如,當 .NET框架應用程式被下載到某一系統中時,它會申請一組許可權(諸如對臨時目錄的寫入許可權)。執行時將收集有關應用程式的事實資訊(諸如:它是從何處下載的、是否用了有效簽名、甚至它訪問系統的準確程度),並按管理策略決定是否允許應用程式執行。執行時甚至還可告之應用程式它無法授權申請的所有許可權,並允許應用程式自行決定是否繼續執行。 

有這種安全系統作保障,許多應用程式配置問題便會迎刃而解。開發人員和管理員(最終是使用者)所面臨的最大挑戰之一是版本的管理問題。如果在您新裝了某個應用程式之後,一切都陷於癱瘓狀態,而在這之前系統一直執行得非常良好,那麼最大的可能是新安裝的應用程式重寫了一些共享庫,並極有可能修正了現有應用程式正使用的程式錯誤。這種情況出現的頻率很高,以致人們將它稱為: “DLL Hell”。 

.NET 框架擁有的幾項高階功能可以徹底消除 “DLL Hell”現象。首先,它有一個非常強大的內部命名系統,能夠有效地防止兩個庫因互相重名而被錯當為對方的情況發生。除此之外,它還提供一項被稱作 “side by side”配置的新功能。如果前例中新安裝的應用程式確實重寫了共享庫,現有應用程式可對該庫進行修復。等現有應用程式再次啟動時,它會檢查所有的共享檔案。如果發現檔案被更改,同時這些更改又是不相容的,則它可以請求執行時提取一個它可以使用的版本。得益於強大的安全系統,執行時可以安全地執行該操作,這樣應用程式就完成了本身的修復工作。 
編者語  
人們總是喜歡不厭其煩地發表諸如 “網際網路改變了一切 ”的陳詞。同樣地,在談論網際網路給人類帶來的影響時,總是情不自禁地使用廣告式的誇張語,以表達對網際網路的推崇。不過,網際網路的確徹底改變了應用程式的開發模式和配置方式。將分發軟體演變成一種服務還有待人們的共同努力, XML是實現這個夢想的重要手段。 .NET框架是微軟開發人員戰略的核心內容,它旨在幫助開發人員輕鬆地構建、配置和執行 Web服務。 

總之, .NET 的最先受益者,將是我們的開發人員。 .NET 的路還很長,今後的發展無論是崎嶇坎坷還是一片光明,在對新技術和 IT 產業的推動上,微軟都是功不可沒的。
執行庫對於程式語言來說並不是新鮮的東西。實際上每一種程式語言都已包含一個執行庫。 Visual Basic開發系統有最明顯的執行庫(正規名字為 VBRUN), Visual C++也有一個 MSVCRT,此外,像 Visual FoxPro、 Jscript、 SmallTalk、 Perl、 Python和 Java等等都如此。 .NET框架的關鍵角色就是它提供了一個跨所有程式語言的統一環境。  
2. 統一程式設計類  
.NET 框架類為開發人員提供了一套可以使用的統一的物件導向、非同步、層次結構的可擴充套件類庫。現在, C++的使用者使用 Microsoft Foundation Classes, Java程式設計師使用 Windows Foundation Classes, Visual Basic的使用者使用 Visual Basic APIs。微軟用 .NET框架統一了這些不同的框架。結果是,開發人員不用非去學多個框架來完成自己的工作。而且,通過建立一套跨程式語言的通用 API, .NET框架可以實現跨語言繼承、糾錯處理以及程式除錯。實際上,從 JScript. 到 C++的所有程式語言,對於 .Net框架都是相互等同的,開發人員可以自由地選擇他們想使用的任何語言。  
.NET 是一種全新的平臺,它將對現有的所有程式碼產生影響。蓋茨說: “微軟所有的產品都會被涉及。我們的整個戰略是圍繞這個平臺展開的。 ”  
3.ASP+  
ASP+ 是使用 .NET框架提供的類庫構建而成的,它提供了一個 Web應用程式模型,該模型由一組控制元件和一個基本結構組成。有了它, Web應用程式的構建變得非常容易。開發人員可以直接使用 ASP+控制元件集,該控制元件集封裝了公共的、用於超文字標識語言 (HTML)使用者介面的各種小元件(諸如文字框、下拉選單等等)。實際上,這些控制元件執行在 Web伺服器上,它們將使用者介面轉換成 HTML格式後再傳送給瀏覽器。在伺服器上,控制元件負責將物件導向的程式設計模型呈現給 Web開發人員,這種程式設計模型能提供物件導向的程式設計技術擁有的豐富功能。 ASP+還提供一些基本結構服務(諸如會話狀態管理和程式迴圈),這些服務進一步減少了開發人員要編寫的程式碼量,並使應用程式的可靠性得到了大幅度提高。 ASP+還允許開發人員將軟體作為一項服務進行傳送。通過使用 ASP+ Web服務功能, ASP+開發人員只需進行簡單的業務邏輯程式設計,而由 ASP+基本結構負責通過 SOAP傳送服務。  

儘管 ASP+還未正式發行,但它已在改進應用程式功能方面創造出了令人難以置信的奇蹟:在現有基於 ASP的應用程式效能基礎上,效能優化了三倍之多,更為激動人心的是生產效率再度攀升。 
.NET 框架的核心部分 

.NET 框架有幾個要素值得一提。首先是它的安全系統和配置系統。這兩個系統協同工作,有力地遏止了執行不安全程式碼的可能性,並大幅度減少了號稱 “DLL Hell”的對應用程式進行配置時所面臨的挑戰。 

安全系統是一個高度細化、基於事實的系統,它賦予開發人員和管理員多種程式碼處理許可權(而不僅僅是 “on”或 “off”)。將來,還會根據程式碼本身的核心要素來決定如何實施上述許可權。 
例如,當 .NET框架應用程式被下載到某一系統中時,它會申請一組許可權(諸如對臨時目錄的寫入許可權)。執行時將收集有關應用程式的事實資訊(諸如:它是從何處下載的、是否用了有效簽名、甚至它訪問系統的準確程度),並按管理策略決定是否允許應用程式執行。執行時甚至還可告之應用程式它無法授權申請的所有許可權,並允許應用程式自行決定是否繼續執行。 

有這種安全系統作保障,許多應用程式配置問題便會迎刃而解。開發人員和管理員(最終是使用者)所面臨的最大挑戰之一是版本的管理問題。如果在您新裝了某個應用程式之後,一切都陷於癱瘓狀態,而在這之前系統一直執行得非常良好,那麼最大的可能是新安裝的應用程式重寫了一些共享庫,並極有可能修正了現有應用程式正使用的程式錯誤。這種情況出現的頻率很高,以致人們將它稱為: “DLL Hell”。 

.NET 框架擁有的幾項高階功能可以徹底消除 “DLL Hell”現象。首先,它有一個非常強大的內部命名系統,能夠有效地防止兩個庫因互相重名而被錯當為對方的情況發生。除此之外,它還提供一項被稱作 “side by side”配置的新功能。如果前例中新安裝的應用程式確實重寫了共享庫,現有應用程式可對該庫進行修復。等現有應用程式再次啟動時,它會檢查所有的共享檔案。如果發現檔案被更改,同時這些更改又是不相容的,則它可以請求執行時提取一個它可以使用的版本。得益於強大的安全系統,執行時可以安全地執行該操作,這樣應用程式就完成了本身的修復工作。 
編者語 
人們總是喜歡不厭其煩地發表諸如 “網際網路改變了一切 ”的陳詞。同樣地,在談論網際網路給人類帶來的影響時,總是情不自禁地使用廣告式的誇張語,以表達對網際網路的推崇。不過,網際網路的確徹底改變了應用程式的開發模式和配置方式。將分發軟體演變成一種服務還有待人們的共同努力, XML是實現這個夢想的重要手段。 .NET框架是微軟開發人員戰略的核心內容,它旨在幫助開發人員輕鬆地構建、配置和執行 Web服務。 
總之, .NET 的最先受益者,將是我們的開發人員。 .NET 的路還很長,今後的發展無論是崎嶇坎坷還是一片光明,在對新技術和 IT 產業的推動上,微軟都是功不可沒的。
經典文章網(www.jdwzw.cn) - 詳文連結:http://www.jdwzw.cn/diannao/10145990D34CG78525JJE6I.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-629676/,如需轉載,請註明出處,否則將追究法律責任。

相關文章