通常說來,一個網路服務只是一個作為服務――通過Internet標準此服務能與其它
網路服務整合在一起――發行的簡單的應用程式。換句話說,它是可通過URL定位的自動將資訊返回到需要它的用戶端那裡的一種資源。網路服務一個重要的特點是客戶不需要知道一種服務是怎樣實現的。在本節中,我將向你解釋網路及網路服務如何把基於組件技術的最好的方面結合在一起的,並且介紹與網路服務通訊所需的基本架構。
同組件一樣,網路服務提供“黑匣子”函數,它可以被再次作用而不用關心此服務是怎樣實現的。網路服務提供被稱為契約的精確定義的介面,此介面描繪了所提供的服務。開發人員可以將遠程服務、本地服務和定置程式碼群組合在一起而整合應用程式。例如,某公司可以使用如下服務組建一線上商店:微軟護照(原文:Passport)服務以驗證使用者身份,第三方個人化服務以使網頁匹配每一個使用者的參數,信用卡處理服務,銷售稅服務,對每個運輸公司的包裹Tracing Service,連結公司內部庫存管理程式的內部目錄服務,以及少量定置代碼以使他們的商店能脫穎而出。
然而,網路服務與現在的組件技術不同,它不使用需要在伺服器和客戶機有明確的、同類型基本構架的具體的物件模型協議,例如DCOM、 RMI或 IIOP 。儘管與具體組件技術緊密結合的實現在一個受控的環境中能很好地被接受,但它們在網路環境中變得不切實際。因為一個整合商業程式的參與者會發生變化,隨著時間的推移,技術也在變化,所以在所有參與者間確保一個單一的、統一的體系架構就變得十分困難。網路服務採取了另外一種途徑,它使用普便存在的網路通訊協定和資料格式,如HTTP和XML,進行通訊。支援這些網路標準的任何系統都支援網路服務。
而且,網路服務契約描述的是以術語報文形式提供的服務,這些服務是由網路服務產生和接受的,而不是描述服務是如何?的。通過把重點放在報文上,網路服務模板就完全對語言、平台和對象模板一無所知。 用任何一套程式設計語言、物件模型和平台的完全特性集,都可實現網路服務。網路 服務可在任何平台被用任何語言所實現的應用程式使用。只要用於解釋服務容量、報文序列和所期望協議的契約得到認同,那麼所實現的網路服務及網路服務使用者就可相互不同,而不會影響會話另一端的應用程式。
網路服務模板對最小體系架構的要求很低,以確保網路服務在使用任何技術和程式設計語言的平台上實現和訪問。對網路服務互用性的解決可只依靠網路標準。然而,為了使應用程式更容易使用網路服務,簡單地同意通過標準網路通訊協定就可以訪問網路服務是不夠的。當網路服務和網路服使用者依靠標準的方式表示資料和命令、表示網路服務契約 、算出網路服務所提供的容量時,網路服務才容易使用。
XML是定義一個標準的、可擴充的用於提供命令和典型資料的語言明顯的一種選擇。雖然為表示命令和典型資料可以定義使用其它技巧(比如編碼為一種查詢字串)的規則,但XML被專門設計為描述資料的標準元語言。簡單對象存取協議(SOAP)是以一種可擴充的方式使用XML表示資料和命令的工業標準。網路服務可選擇用SOAP決定報文的格式。
XML是網路服務契約的一種使能技術。服務契約語言 (SCL)是記錄網路服務契約的XML文法。由於SCL是基於XML的,所以對開發人員和開發工具來說,容易產生、解釋契約。關於SCL細則的草案很快會出台(注意:現在的SOAP Toolkit for Visual Studio 6.0支援稱為SDL的SCL的早期版本)。
Disco 規範為服務提供者發布網路 服務契約和相應的機制描述了一個標準方式,這將使開發人員或開發工具可找到契約文獻。當你讀到這裡時, Disco規範的草案應出台了。
象SOAP, SCL和Disco這樣的標準有助於開發人員,因為它們不需要明白和實現所使用的每一個網路服務的訪問方式。支援這些標準的更好的、已充分測試的、高效能的體系架構將由開發平台提供,這會大大簡化整個開發過程。
? MicroSoft .NET Framework
MicroSoft .NET架構的目的是使你更容易建立網路應用程式和網路服務。圖2 顯示了MicroSoft .NET架構的體系。建立在作業系統最上層的服務,是管理運行時代碼需求的common language runtime,這些代碼可以用任何現代程式設計語言所寫。Runtime提供了許多服務,這些服務有助於簡化代碼開發和應用程式的開發同時也將提高應用程式的可靠性。.NET Framework包括一套可被開發人員用於任何程式設計語言的類庫。在此之上是許多應用程式模板,這些模板特定地為開發網路站台和網路服務提供進階組件和服務。