Duwamish Web Services分析篇
Written by: Rickie Lee
Nov. 08, 2004
Duwamish 7.0在web項目中提供了一個(gè)Web Service(service/catalogservice.asmx),以向 Internet 公開(kāi)它的書(shū)目錄搜索功能。CatalogService Web Service由一個(gè)asmx文件和一個(gè)代碼隱藏文件組成,其中ASMX 文件充當調用 Web Services的客戶(hù)端的基 URL,代碼隱藏文件包含實(shí)現 Web 服務(wù)的代碼。不過(guò),在整個(gè)Duwamish項目中并沒(méi)有調用該web service,正如以前的POST中所提及的:
If you need to communicate between applications (even .NET apps) then use web services. Note this is not between tiers, but between applications – as in SOA (Service-Oriented Architecture). SOA is not useful INSIDE applications. It is only useful BETWEEN applications.
1. Web Services概述
Web Services既可以在內部由單個(gè)應用程序使用,也可通過(guò) Internet 公開(kāi)以供外部的應用程序使用。由于可以通過(guò)標準接口訪(fǎng)問(wèn),因此Web Services使異類(lèi)系統能夠作為單個(gè)計算網(wǎng)絡(luò )資源協(xié)同運行。
Web Services并不追求一般的代碼可移植性功能,而是為實(shí)現數據和系統的互操作性提供了一種可行的解決方案。Web Services使用基于XML的消息處理作為基本的數據通訊方式,以幫助消除使用不同組件模型、操作系統和編程語(yǔ)言的系統之間存在的差異。開(kāi)發(fā)人員可以用像過(guò)去在創(chuàng )建分布式應用程序時(shí)使用組件一樣的方式創(chuàng )建將來(lái)自各種平臺的Web Services組合在一起的應用程序。
Web Services的核心特征之一是服務(wù)的實(shí)現與使用之間的高度抽象化。通過(guò)將基于XML的消息處理機制,Web Services客戶(hù)端和Web Services提供程序之間除輸入、輸出和位置之外無(wú)需互相了解其他信息。
Web Services向外界發(fā)布出一個(gè)能夠通過(guò)Web進(jìn)行調用的、平臺無(wú)關(guān)的API。也就是說(shuō),你能夠在任何你喜歡的平臺上,用編程的方法通過(guò)Web來(lái)調用這個(gè)應用程序,進(jìn)行基于Web的分布式計算和處理。Web Services平臺是一套標準,它定義了應用程序如何在Web上實(shí)現互操作性。Web Services平臺采用XML來(lái)表示數據的基本格式,采用W3C制定的XML Schema(XSD)來(lái)作為其數據類(lèi)型系統。
組成Web Services平臺的三個(gè)核心的技術(shù)規范分別為SOAP、WSDL和UDDI。SOAP規范定義了SOAP消息的格式,以及怎樣通過(guò)HTTP協(xié)議來(lái)使用SOAP,來(lái)執行Web Services的調用。WSDL(Web Services描述語(yǔ)言)用來(lái)描述Web Services。因為其基于XML,所以WSDL文檔既是機器可閱讀的,又是人可閱讀的。UDDI(統一描述,發(fā)現和集成協(xié)議)標準定義了Web Services的發(fā)布與發(fā)現的方法。
從技術(shù)的角度來(lái)看,Web Services可以被認為是一種部署在Web上的對象(Web Object),因此,具有對象技術(shù)所承諾的所有優(yōu)點(diǎn);同時(shí),Web Services的基石是以XML為主的、開(kāi)放的Web規范技術(shù),因此,具有比任何現有對象技術(shù)更好的開(kāi)放性。
2. Duwamish中的CatalogService Web Service
(1)CatalogServer.asmx文件中僅包含一行代碼:
<%@ WebService Language="c#" Codebehind="CatalogService.cs" Class="Duwamish7.Web.Service.CatalogService" %>
(2)CatalogService.cs代碼隱藏文件包含實(shí)現web service的代碼:
CatalogService Web 服務(wù)實(shí)現 GetBooksByTopic 和 GetBooksByTopicSecure Web 方法,返回值為DataSet類(lèi)型(支持XML編碼和序列化)。Web Service發(fā)布的上述Web方法均都有WebMethodAttribute。
WebMethodAttribute向使用 ASP.NET 創(chuàng )建的 XML Web services 中的某個(gè)方法添加此特性后,就可以從遠程 Web 客戶(hù)端調用該方法。
另外還有一些輔助的class和方法(調用BusinessFacade tier),代碼比較簡(jiǎn)單。
(3)Web.config配置文件<webServices> 元素:可以配置使用 ASP.NET 創(chuàng )建的 XML Web services 的設置。
3. Summary
Web Services不僅可用于異構平臺的相互集成,也是分布式應用開(kāi)發(fā)的一種技術(shù)。Microsoft在推.Net Framework時(shí),盡心盡力吹捧這項技術(shù),并冠以XML Web Services。不過(guò)由于Web Services的性能不好的問(wèn)題,感覺(jué)目前在企業(yè)內部應用并不多,估計還不及.Net Remoting技術(shù)的應用。
Microsoft還有一個(gè)Web Services的增強軟件開(kāi)發(fā)包:Web Services Enhancements (WSE) Version 2.0,主要提供如下特性:安全特性(數字簽名和加密),消息路由,消息附件等等,從Reference 1可以下載。
現在,Web Services方面的相關(guān)規范很多,如WS-Security, WS-Policy, WS-Trust, WS-SecureConversation……,令人目不暇接,在不斷地向前發(fā)展。從另外一個(gè)方面也表示,Web Services技術(shù)目前在企業(yè)應用方面還不夠成熟。
聯(lián)系客服