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