XML、SOAP以及.NET

來源:互聯網
上載者:User
xml XML、Web服務和.NET架構

應用程式開發技術正發生著一次質的飛躍,從根本上大幅度提高開發人員的生產效率,它開啟了一道通向全新概念的應用程式的大門。

在過去,開發人員一直通過整合本地系統服務來構建應用程式。在這種模式下,開發人員可以訪問豐富的開發資源並能嚴格控制應用程式的行為。

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

我們正在進入一個嶄新的計算時代,一個互連網時代,其核心技術是“可延伸標記語言 (XML)”,即XML。XML建立出可供任何人從任何地方訪問和使用的功能強大的應用程式。它極大地擴充了應用程式的功能,並實現了軟體的不間斷傳輸。在這種大環境中,軟體已不完全是指那些從CD進行安裝的程式,而是已經演變成了一種服務:類似於調用者的ID驗證或按觀看次數進行收費的電視,人們可通過通訊媒體預定此類服務。

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

從理論上講,開發人員可通過調用Web應用編程介面(API)(就像調用本地服務一樣),將Web服務整合到應用程式中,不同的是Web API調用可通過互連網發送給位於遠程系統中的某一服務。例如,Microsoft Passport服務使得開發人員能夠對某應用程式進行驗證。通過Passport服務編程,開發人員可以充分利用Passport的基本結構,通過運行Passport來維護使用者資料庫,以確保它的正常運行、定期備份等等。

鬆散耦合

在某個網路中分發應用程式邏輯,並不是一個全新的概念,在Web中分發並整合應用程式邏輯才是一個嶄新的概念。

從前,分布式的應用程式邏輯需要使用分布式的物件模型,諸如:微軟的分散式元件物件模型(DCOM)、對象管理集團的公用對象請求代理程式體繫結構(CORBA)或Sun的遠程方法調用(RMI)。通過使用這種基本結構,開發人員仍可擁有使用本地模型所提供的豐富資源和精確性,並可將服務置於遠程系統中。

這些系統有一個共同的缺陷,那就是它們無法擴充到互連網上:它們要求服務用戶端與系統提供的服務本身之間必須進行緊密耦合,即要求一個同類基本結構。這樣的系統往往十分脆弱:如果一端的執行機制發生變化,那麼另一端便會崩潰。例如,如果伺服器應用程式的介面發生更改,那麼用戶端便會崩潰。

要求提供緊密耦合的基本結構,無可厚非,許多應用程式均是基於這種系統構建而成的。但是,當各個公司需要相互合作、或資訊技術供應商擴大業務範圍時,便很難實現單一而統一的基本結構。您根本無法保證您希望與之進行遠程通訊的管道的另一端,具備所有您需要的基本結構:對於它使用的作業系統、物件模型或程式設計語言,您可能一無所知。

相反,Web服務彼此是鬆散偶合的。串連中的任何一方均可更改執行機制,卻不影響應用程式的正常運行。從技術角度講,人們已轉向使用一種基於訊息的非同步技術來實現高可靠性的系統效能,通過使用諸如HTTP、簡易郵件傳輸通訊協定(SMTP)以及至為重要的XML來實現統一的串連。

訊息傳遞系統將通訊的基本單元打包成自我描述型的資料包(又稱作訊息),並將其放到網路纜線中。訊息傳遞系統與分布式對象系統之間的本質區別在於:要求發送方辨識接收方的基本結構的程度有所不同。在分布式系統中,發送方需對接收方的情況作出種種猜測:應用程式是如何啟用或拆包的,調用的是什麼樣的介面,等等。

另一方面,訊息傳遞系統會在纜線格式級上建立合約。發送方既不需考慮訊息被接收後的情況,也不需考慮接發雙方之間的通訊情況,唯一需要考慮的是接收方是否能辯識發送的訊息內容。

在纜線格式級上建立合約的優勢不言而喻。例如,接收方可在任何時刻變更,而不會干擾發送方的訊息發送,只要它仍可辯識原有訊息的內容。另外,發送方無需任何特殊的軟體即可與接收方通訊:只要它發出正確格式的訊息,接收方就可以響應。

纜線級的XML:SOAP

實現Web服務的異類基本結構以及在整個Web中實現Web服務的關鍵,是實現支援簡單資料描述格式的技術。這種格式就是XML。Web服務必須使用XML來完成三件事情:基本的纜線格式、服務描述以及“服務發現”。

SOAP:在通訊的最低層級,系統需要使用同一語言。特別,作為通訊雙方的應用程式需要遵守同一套通訊規則:如何表示不同的資料類型(例如:是整數還是數組),以及如何表示命令(即:需要對資料進行何種操作)。另外,在必要的時候應用程式還需對該語言適當的擴充。簡易物件存取通訊協定 (SOAP)(SOAP)是XML的實施工具,它提供了一套公用規則集,該規則集說明了如何表示並擴充資料和命令。

Web服務描述語言(WSDL)。雙方應用程式在得到了如何表示資料類型和命令的規則後,需要對所接收的特定資料和命令進行有效描述。僅僅說已接收到整數是不夠的;比如,在接收到兩個整數後,應用程式必須明確表述它可以對這兩個整數執行乘法運算操作。Web服務描述語言(WSDL)是一種XML文法,開發人員和開發工具可使用它來表述Web服務的具體功能。

“SOAP發現”:在最高層,還需制定一套如何定位服務描述的規則:預設情況下,使用者或工具能在什麼地方找到服務的功能描述?依據“SOAP發現”規格說明中提供的規則集,使用者或開發工具可以自動找到服務的SCL描述。
一旦實現了這三種功能層,開發人員便可容易地找到Web服務,將它例示成一個對象後再整合進應用程式中,繼而構建出一個具有豐富功能的基本結構。這樣,得到的應用程式便能與Web服務進行反向通訊了。

.NET架構:Web服務引擎

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

.NET架構套件含三個主要部分:通用語言執行平台、具有多階層的統一的類庫集合和進階版“活動伺服器頁面”(又名ASP+)

通用語言執行平台

此名稱不能準確反映它的全部功能。實際上,通用語言執行平台在組件的開發過程中以及軟體的運行過程中,都扮演著非常重要的角色。在組件運行過程中,運行時負責管理記憶體配置、啟動或取消線程和進程、實施安全性策略、同時滿足當前組件對其它組件的需求。在開發階段,運行時的作用有些變化:與現今的COM相比,運行時的自動化程度大為提高(比如可自動執行記憶體管理),因而開發人員的工作變得非常輕鬆。尤其是,映射功能將使代碼編寫量銳減,這些代碼是開發人員在將商務邏輯轉化成可複用的組件進行編程時所需的。

對程式設計語言而言,運行時這個概念並不新奇:實際上每種程式設計語言都有自己的運行時。Visual Basic®開發系統具有最為明顯的運行時(名為VBRUN),Visual C++®跟Visual FoxPro®、Jscript®、SmallTalk、Perl、Python和Java一樣,有一個運行時MSVCRT。NET架構的關鍵作用是它提供了一個跨程式設計語言的統一的編程環境,這也是它能獨樹一幟的根本原因所在。

統一的編程類

.NET架構中的類為開發人員提供了一個統一的、物件導向的、層次化的、可擴充的類庫集(API)。現今,C++開發人員使用的是微軟基礎類庫,Java開發人員使用的是Windows®基礎類庫,而Visual Basic使用者使用的又是Visual Basic API集。簡而言之,.NET架構統一了微軟當前各種不同的架構。這樣,開發人員不再需要學習多種架構就能順利編程。遠不止於此的是,通過建立一個公用的跨程式設計語言的API集,.NET架構可實現跨語言繼承性、錯誤處理功能和調試功能。實際上,從Jscript到C++的所有程式設計語言,都是相互等同的,開發人員可以自由選擇理想的程式設計語言。

進階版“活動伺服器頁面”(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”現象。首先,它有一個非常強大的內部命名系統,能夠有效地防止兩個庫因互相重名而被錯當為對方的情況發生。除此之外,它還提供一項被稱作“並行”配置的新功能。如果前例中新安裝的應用程式確實重寫了共用庫,現有應用程式可對該庫進行修複。等現有應用程式再次啟動時,它會檢查所有的共用檔案。如果發現檔案被更改,同時這些更改又是不相容的,則它可以請求運行時提取一個它可以使用的版本。得益於強大的安全系統,運行時可以安全地執行該操作,這樣應用程式就完成了本身的修複工作。

結論

人們總是喜歡不厭其煩地發表諸如“互連網改變了一切”的陳詞濫調。同樣地,在談論互連網給人類帶來的影響時,總是情不自禁地使用廣告式的誇張語,以表達對互連網的推崇。不過,互連網的確徹底改變了應用程式的開發模式和配置方式。將傳輸軟體演變成一種服務還有待人們的共同努力,XML是實現這個夢想的重要手段。.NET架構是微軟開發人員戰略的核心內容,它旨在協助開發人員輕鬆地構建、配置和運行Web服務。


相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。