當前位置:工程項目OA系統(tǒng) > 泛普各地 > 河北O(jiān)A系統(tǒng) > 石家莊OA系統(tǒng) > 石家莊OA信息化
Web Services 及其技術(shù)(上)
Web Services 及其技術(shù)(上)
網(wǎng)絡(luò)服務(Web
Service)是基于網(wǎng)絡(luò)的分布式應用程序的基本構(gòu)造模塊,而這些程序是以平臺、對象模板和多語言方式構(gòu)建的。
網(wǎng)絡(luò)服務是建立在象HTTP和XML之類的開放的Internet 標準之上的,并且由此形成了可編程網(wǎng)絡(luò)理念的基礎(chǔ)。
圖1 網(wǎng)絡(luò)服務應用模型
這篇文章詳細講述網(wǎng)絡(luò)服務以及為其提供支持的技術(shù),這些技術(shù)能確保服務被集成到應用程序里去。同時本文將講述新的Microsoft.NET框架及其對生成和使用網(wǎng)絡(luò)服務的支持。
現(xiàn)在開發(fā)中最緊迫的問題是應用程序的集成化:運行在不同操作系統(tǒng)上的不同的應用程序,通常是由不同編程語言對象模板建立的,獲取這些程序然后把它們轉(zhuǎn)化為易于使用的網(wǎng)絡(luò)應用程序。建立在象HTTP和XML之類開放的網(wǎng)絡(luò)標準之上的網(wǎng)絡(luò)服務接受了這項挑戰(zhàn)。
但是只支持標準協(xié)議是不夠的,我們必須有途徑來生成、部署、擴展和維護這些網(wǎng)絡(luò)服務,這正是Microsoft.NET框架要解決的問題。
圖2 Microsoft.NET Framework體系結(jié)構(gòu)
下面筆者將介紹網(wǎng)絡(luò)服務及Microsft.NET框架的組件,包括通用運行語言(Common Language Runtime)、服務框架和用于建立、集成網(wǎng)絡(luò)服務的程序模板。
網(wǎng)絡(luò)服務一覽
通常說來,網(wǎng)絡(luò)服務只是一個作為服務發(fā)行的簡單應用程序。換句話說,它是可通過URL定位的自動將信息返回到需要它的客戶端那里的一種資源。網(wǎng)絡(luò)服務一個重要的特點是客戶不需要知道一種服務是怎樣實現(xiàn)的。在本文中,筆者將向你解釋網(wǎng)絡(luò)及網(wǎng)絡(luò)服務如何把基于組件技術(shù)的最好的方面結(jié)合在一起,并且介紹與網(wǎng)絡(luò)服務通信所需的基本框架。
同組件一樣,網(wǎng)絡(luò)服務提供“黑匣子”函數(shù),它可以被多次用而不用關(guān)心此服務是怎樣實現(xiàn)的。網(wǎng)絡(luò)服務還提供被稱為契約的精確定義的接口,此接口描繪了所提供的服務。開發(fā)人員可以將遠程服務、本地服務和定制代碼組合在一起集成到應用程序中。例如,某公司可以使用如下服務組建一個在線商店:微軟護照(Passport)服務用來驗證用戶身份、第三方個人化服務用來使網(wǎng)頁匹配每一個用戶的參數(shù)、信用卡處理服務、銷售稅服務、對每個運輸公司的包裹跟蹤服務,鏈接公司內(nèi)部庫存管理程序的內(nèi)部目錄服務以及少量定制代碼,以使他們的商店能脫穎而出。圖1顯示的模型說明了為生成分布式網(wǎng)絡(luò)應用程序應怎樣鏈接網(wǎng)絡(luò)服務。
然而,網(wǎng)絡(luò)服務與現(xiàn)在的組件技術(shù)并不相同,它不使用需要在服務器和客戶機有明確的、同類型基本構(gòu)架的具體對象模型協(xié)議,例如DCOM、RMI或IIOP。盡管與具體組件技術(shù)緊密結(jié)合的實現(xiàn)在一個受控的環(huán)境中能很好地被接受,但它們在網(wǎng)絡(luò)環(huán)境中變得不切實際。因為一個集成商業(yè)程序的參與者會發(fā)生變化,隨著時間的推移,技術(shù)也在變化,所以在所有參與者間確保一個單一的、統(tǒng)一的體系架構(gòu)就變得十分困難。網(wǎng)絡(luò)服務采取了另外一種途徑,它使用普便存在的網(wǎng)絡(luò)協(xié)議和數(shù)據(jù)格式進行通信,如HTTP和XML。支持這些網(wǎng)絡(luò)標準的任何系統(tǒng)都支持網(wǎng)絡(luò)服務。
而且,網(wǎng)絡(luò)服務契約描述的是以術(shù)語報文形式提供的服務,這些服務是由網(wǎng)絡(luò)服務生成和接受的,而并不描述服務是如何實現(xiàn)的。通過把重點放在報文上,網(wǎng)絡(luò)服務模板對語言、平臺和對象模板變得完全透明。這樣,用任何一套編程語言、對象模型和平臺的完全特性集,都可實現(xiàn)網(wǎng)絡(luò)服務。網(wǎng)絡(luò)服務可以在任何平臺上,被任何應用程序所使用。只要用于解釋服務容量、報文序列和所期望協(xié)議的契約得到認同,那么所實現(xiàn)的網(wǎng)絡(luò)服務及網(wǎng)絡(luò)服務用戶就可相互不同,而不會影響會話另一端的應用程序。
網(wǎng)絡(luò)服務模板對最小體系架構(gòu)的要求很低,目的是確保網(wǎng)絡(luò)服務在使用任何技術(shù)和編程語言的平臺上實現(xiàn)和訪問。對網(wǎng)絡(luò)服務互用性的解決可以只依靠網(wǎng)絡(luò)標準。然而,為了使應用程序更容易使用網(wǎng)絡(luò)服務,簡單地通過標準網(wǎng)絡(luò)協(xié)議訪問網(wǎng)絡(luò)服務是不夠的。當網(wǎng)絡(luò)服務和網(wǎng)絡(luò)服務使用者依靠標準的方式(如XML)表示數(shù)據(jù)和命令、表示網(wǎng)絡(luò)服務契約、算出網(wǎng)絡(luò)服務所提供的容量時,網(wǎng)絡(luò)服務才會更加容易使用。
XML是定義一個標準的、可擴展的用于提供命令和典型數(shù)據(jù)的語言的明智選擇。雖然為表示命令和典型數(shù)據(jù)可以定義使用其它技巧(比如編碼為一種查詢字符串)的規(guī)則,但XML被專門設(shè)計為描述數(shù)據(jù)的標準元語言。簡單對象存取協(xié)議(SOAP)是以一種可擴展的方式使用XML表示數(shù)據(jù)和命令的工業(yè)標準。網(wǎng)絡(luò)服務可選擇用SOAP決定報文的格式。
XML是網(wǎng)絡(luò)服務契約的一種常用技術(shù)。服務契約語言(SCL)是記錄網(wǎng)絡(luò)服務契約的XML語法。由于SCL是基于XML的,所以對開發(fā)者和開發(fā)工具來說,它更容易生成并解釋契約。
圖3 Services Framework類庫
Disco規(guī)范為服務提供者發(fā)布網(wǎng)絡(luò)服務契約和相應的機制描述了一個標準方式,這將使開發(fā)者或開發(fā)工具可找到契約文獻。
象SOAP、SCL和Disco這樣的標準有助于開發(fā)者,因為它們不需要明白和實現(xiàn)所使用的每一個網(wǎng)絡(luò)服務的訪問方式。支持這些標準的更好的、已充分測試的、高性能的體系架構(gòu)將由開發(fā)平臺提供,這會大大簡化整個開發(fā)過程。
Microsoft.NET Framework
Microsoft.NET框架的目的是使你更容易建立網(wǎng)絡(luò)應用程序和網(wǎng)絡(luò)服務。圖2顯示了Microsoft.NET框架的體系結(jié)構(gòu)。建立在操作系統(tǒng)最上層的服務,是管理運行代碼需求的Common Language Runtime,這些代碼可以用任何現(xiàn)代編程語言所編寫。Runtime提供了許多服務,這些服務有助于簡化代碼開發(fā)和應用程序的開發(fā),同時也將提高應用程序的可靠性。.NET Framework包括一套可被開發(fā)者用于任何編程語言的類庫。在此之上是許多應用程序模板,這些模板為開發(fā)網(wǎng)絡(luò)站點和網(wǎng)絡(luò)服務提供了高級組件和服務,下面筆者將逐層描述。
Common Language Runtime
運行語言(Runtime)可以調(diào)用并運行任何編程語言所寫的代碼。以運行為目標的代碼被稱為受控(Managed)代碼,受控代碼只是意味著在內(nèi)部可執(zhí)行代碼與自身代碼存在已經(jīng)定義好的合作契約。對于生成對象、調(diào)用方法等這樣的任務,被委托給了運行語言,這使得運行語言能為可執(zhí)行代碼增加額外的服務。
運行語言具有交叉語言集成、自描述組件、簡單配制、版本化以及集成安全服務等特點。
運行語言使用一種能表達大部分現(xiàn)代編程語言語義的通用類型系統(tǒng),該通用類型系統(tǒng)定義了一套標準類型及生成新標準的規(guī)則。運行語言知道怎樣生成、執(zhí)行這些類型。編譯器和解釋器使用運行語言服務來定義類型、管理對象、進行方法調(diào)用。
類型系統(tǒng)的主要設(shè)計目的是使多種語言能深度集成。用一種語言所寫的代碼能繼承用另一種語言所寫的類,用一種語言所寫的代碼拋出的異常能被用另一種語言寫的代碼所捕獲,象調(diào)試之類的操作會在完全封閉下進行,而不用考慮代碼編寫所用的語言。這就意味著編寫可重用類庫的開發(fā)者,不再需要為每一種編程語言或編譯器生成一個版本,并且使用類庫的開發(fā)者也將不再受到他們所使用的編程語言開發(fā)庫的限制。
自描述組件簡化了開發(fā)和配制,并提高了系統(tǒng)的可靠性。許多由運行語言提供的服務是由元數(shù)據(jù)及用于補充可執(zhí)行代碼的信息所驅(qū)動。因為所有的信息都儲存在一起,只有可執(zhí)行的代碼才被稱為自描述組件。
自描述組件的一個主要優(yōu)點是,使用它們并不需要其它文件。類的定義不需要單獨的頭文件;通過檢查元數(shù)據(jù)對類的定義可以從組件自身獲得??缯Z言或過程邊界訪問組件并不需要各自的IDL文件、類型文件或proxy/stubs;所必需的信息已存在于元數(shù)據(jù)之中。最主要的是,由于元數(shù)據(jù)是在編譯過程中由源代碼生成,并與可執(zhí)行代碼儲存在一起,因此,它將永遠和可執(zhí)行部分同步。
除了改善對單個組件的配置,Microsft .NET框架定義了一個應用程序配置模板,以解決定制應用程序安裝和DLL版本化(通常被稱為“DLL Hell”)這一復雜過程的問題,運行語言提供了支持這個模板的服務。
Microsft.NET框架引入了組合體的概念。一個組合體是一組資源和類型,并包括有關(guān)這些資源和類型的元數(shù)據(jù),也就是被作為一個單元配置的。元數(shù)據(jù)被稱為組合體的名單,它包含象類型和資源表之類能被組合體外看得見的信息,這個名單也包括有關(guān)從屬關(guān)系之類的信息,例如組合體建立時的版本號。開發(fā)人員可以指定版本策略,以指示運行語言是否裝入系統(tǒng)上已安裝的依賴于組合體的最新版本,裝入一指定版本,或在編譯時使用的版本。
某軟件組件的多個拷貝可以存在于同樣的操作系統(tǒng)上,然而,通常只有其中的一個拷貝能被操作系統(tǒng)注冊、調(diào)入內(nèi)存并執(zhí)行。對系統(tǒng)來說,定位和調(diào)入內(nèi)存的策略是全局性的。.NET Framework Common Language Runtime增加了所必須的體系架構(gòu)以支持管理組件定位和調(diào)入的每個應用程序策略,這通常被稱為并行配置。
組合體可以被一個應用程序私有,或被多個應用程序共享。一個組合體的多個版本可以同時配置在同一臺機器上。應用程序的配置信息定義了應到何處去查找組合體,這樣,Runtime就能為同時運行的兩個不同的應用程序裝入到同一組合體的不同版本中,消除了由組件版本的不兼容性引起的問題,提高了系統(tǒng)整體的穩(wěn)定性。如果必要,管理員可以為配置時的組合體增加配置信息。
因為組合體是自描述的,所以并不需要在系統(tǒng)上進行注冊。應用程序的配置簡單到了只需將文件拷貝到目錄中即可(如果為了使應用程序能夠運行,必須安裝未經(jīng)組織過的組件的話,情況會稍微復雜一點)。配置信息保存在可被任何文本編輯器編輯的XML文件中。
最后,運行語言也提供完整的、普遍深入的安全服務,以確保未經(jīng)授權(quán)的用戶不能訪問機器上的資源,并且代碼不會執(zhí)行未經(jīng)允許的動作。這就提高了系統(tǒng)整體的安全性和可靠性。由于運行語言用于裝入代碼、生成對象、執(zhí)行方法調(diào)用,所以當受控代碼裝入內(nèi)存并執(zhí)行時,運行語言能進行安全檢查,從而強化安全策略。
Microsft.NET框架不僅規(guī)定代碼訪問安全機制,還規(guī)定基于角色的安全機制。通過代碼訪問安全機制,開發(fā)人員能為應用程序指定完成工作所必需的權(quán)限。例如,程序或許需要寫文件或訪問環(huán)境變量的權(quán)力。這類信息和有關(guān)代碼標志的信息一起存儲在配置級上。當代碼裝入內(nèi)存并執(zhí)行方法調(diào)用時,運行語言將驗證是否能給予代碼所要求的權(quán)限。如果不能,將記錄一條安全沖突信息。給予權(quán)限的策略,被稱之為信任策略,是由系統(tǒng)管理員建立的,并且是建立在關(guān)于代碼的證據(jù)基礎(chǔ)之上。比如:代碼是誰發(fā)布的,是從什么地方獲得的,以及在組合體中找到的代碼標志和它要求的權(quán)限。開發(fā)人員可以指定他們具體的權(quán)限,以防止其它人惡意使用他們的代碼。如果所需要的權(quán)限依賴直到運行時刻才會知道的信息,那么就可寫入綱領(lǐng)性的安全檢查。
除了代碼訪問安全機制,運行語言還支持基于角色的安全機制?;诮巧陌踩珯C制建立同代碼訪問安全機制一樣的權(quán)限模板,只是這些權(quán)限是建立在用戶的身份之上,而不是建立在代碼的標志之上。角色表明了用戶所屬的類,并且可以在開發(fā)和配置階段定義。給予權(quán)限的策略被分配到每個預定義的角色。在運行時刻,用戶的身份被確定,代碼將代表這個身份運行。運行語言決定用戶是哪個角色的成員,然后給予基于這個角色的權(quán)限。
在查看Microsft.NET框架的可編程模板前,先看一下它所提供的服務。
服務框架
正如我們從圖2所看到的那樣,在Common Language Runtime之上是服務框架(Services Framework),此框架提供能被任何現(xiàn)代編程語言所調(diào)用的類。所有的類都遵循一套命名和設(shè)計方針,從而大大減小了開發(fā)人員學習過程中的難度。
圖3顯示了服務框架中的一些主要類庫??蚣馨ㄒ惶组_發(fā)人員希望在標準語言庫中存在的基類庫,例如:集合、輸入/輸出、字符串及數(shù)據(jù)類。另外,基類庫提供訪問操作系統(tǒng)服務如圖畫、網(wǎng)絡(luò)、線程、全球化和加密的類。服務框架也包括數(shù)據(jù)訪問類庫及開發(fā)工具,如調(diào)試和剖析服務等。
- 1組織學習的五種類型
- 2Consuming a Web Service from a Win Form Application
- 3石家莊OA信息化:挖掘企業(yè)的隱藏資源(姜鐵虎)
- 4石家莊OA信息化方面的站點資源!
- 5Sun拒入“WS-I” 不想跟微軟IBM玩游戲
- 6中小企業(yè)如何化解經(jīng)濟危機
- 7微軟在宣布.Net計劃進入第二階段時預測——Web服務掀起下一次IT泛普
- 8Licensee Requirements from Dev, Test, and Ops
- 9使用WSDL部署Web服務,第2部分:簡單對象訪問協(xié)議(SOAP)
- 10石家莊OA信息化調(diào)研問卷
- 11XML Web Service-Enabled Office Documents
- 12協(xié)同辦公系統(tǒng)整合了多層次的安全控制方案
- 13即插即用portlet
- 14借助RDF增強WSDL--管理結(jié)構(gòu)化的Web服務元數(shù)據(jù)
- 15Building an ASP.NET Web Service
- 16石家莊OA信息化與知識價值鏈(BY AMT 夏敬華)
- 17資本的冬天是協(xié)同軟件行業(yè)的春天
- 18SOAP技術(shù)與B2B應用集成--SOAP的型系統(tǒng)和數(shù)據(jù)編碼規(guī)則
- 19What is a digital dashboard?
- 20IBM石家莊OA信息化研究院網(wǎng)站
- 21InterOP Stack新一代平臺互操作技術(shù):InterOP Stack技術(shù)概覽
- 22理解Web服務的服務質(zhì)量
- 23將舊應用改造成Web服務
- 2410大網(wǎng)絡(luò)服務安全需求
- 25Using ASP.NET/WebServices For UPS Shipping Quotes
- 26IBM WebSphere以最快速度部署開放的Web服務
- 27.NET會取代COM嗎?--準備Web服務的未來
- 28Web服務面臨的課題:安全和標準化
- 29認識石家莊OA信息化系統(tǒng)模型,把握石家莊OA信息化系統(tǒng)實質(zhì)(BY AMT 夏敬華)
- 30網(wǎng)絡(luò)、知識增長和經(jīng)濟發(fā)展
成都公司:成都市成華區(qū)建設(shè)南路160號1層9號
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務大廈18樓
版權(quán)所有:泛普軟件 渝ICP備14008431號-2 渝公網(wǎng)安備50011202501700號 咨詢電話:400-8352-114