Duwamish Web Services分析篇
Duwamish Web Services分析篇
Written by: Rickie Lee
Nov. 08, 2004
Duwamish 7.0在web项目中提供了一个Web Service(service/catalogservice.asmx),以向 Internet 公开它的书目录搜索功能。CatalogService Web Service由一个asmx文件和一个代码隐藏文件组成,其中ASMX 文件充当调用 Web Services的客户端的基 URL,代码隐藏文件包含实现 Web 服务的代码。不过,在整个Duwamish项目中并没有调用该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既可以在内部由单个应用程序使用,也可通过 Internet 公开以供外部的应用程序使用。由于可以通过标准接口访问,因此Web Services使异类系统能够作为单个计算网络资源协同运行。
Web Services并不追求一般的代码可移植性功能,而是为实现数据和系统的互操作性提供了一种可行的解决方案。Web Services使用基于XML的消息处理作为基本的数据通讯方式,以帮助消除使用不同组件模型、操作系统和编程语言的系统之间存在的差异。开发人员可以用像过去在创建分布式应用程序时使用组件一样的方式创建将来自各种平台的Web Services组合在一起的应用程序。
Web Services的核心特征之一是服务的实现与使用之间的高度抽象化。通过将基于XML的消息处理机制,Web Services客户端和Web Services提供程序之间除输入、输出和位置之外无需互相了解其他信息。
Web Services向外界发布出一个能够通过Web进行调用的、平台无关的API。也就是说,你能够在任何你喜欢的平台上,用编程的方法通过Web来调用这个应用程序,进行基于Web的分布式计算和处理。Web Services平台是一套标准,它定义了应用程序如何在Web上实现互操作性。Web Services平台采用XML来表示数据的基本格式,采用W3C制定的XML Schema(XSD)来作为其数据类型系统。
组成Web Services平台的三个核心的技术规范分别为SOAP、WSDL和UDDI。SOAP规范定义了SOAP消息的格式,以及怎样通过HTTP协议来使用SOAP,来执行Web Services的调用。WSDL(Web Services描述语言)用来描述Web Services。因为其基于XML,所以WSDL文档既是机器可阅读的,又是人可阅读的。UDDI(统一描述,发现和集成协议)标准定义了Web Services的发布与发现的方法。
从技术的角度来看,Web Services可以被认为是一种部署在Web上的对象(Web Object),因此,具有对象技术所承诺的所有优点;同时,Web Services的基石是以XML为主的、开放的Web规范技术,因此,具有比任何现有对象技术更好的开放性。
2. Duwamish中的CatalogService Web Service
(1)CatalogServer.asmx文件中仅包含一行代码:
<%@ WebService Language="c#" Codebehind="CatalogService.cs" Class="Duwamish7.Web.Service.CatalogService" %>
(2)CatalogService.cs代码隐藏文件包含实现web service的代码:
CatalogService Web 服务实现 GetBooksByTopic 和 GetBooksByTopicSecure Web 方法,返回值为DataSet类型(支持XML编码和序列化)。Web Service发布的上述Web方法均都有WebMethodAttribute。
WebMethodAttribute向使用 ASP.NET 创建的 XML Web services 中的某个方法添加此特性后,就可以从远程 Web 客户端调用该方法。
另外还有一些辅助的class和方法(调用BusinessFacade tier),代码比较简单。
(3)Web.config配置文件<webServices> 元素:可以配置使用 ASP.NET 创建的 XML Web services 的设置。
3. Summary
Web Services不仅可用于异构平台的相互集成,也是分布式应用开发的一种技术。Microsoft在推.Net Framework时,尽心尽力吹捧这项技术,并冠以XML Web Services。不过由于Web Services的性能不好的问题,感觉目前在企业内部应用并不多,估计还不及.Net Remoting技术的应用。
Microsoft还有一个Web Services的增强软件开发包:Web Services Enhancements (WSE) Version 2.0,主要提供如下特性:安全特性(数字签名和加密),消息路由,消息附件等等,从Reference 1可以下载。
现在,Web Services方面的相关规范很多,如WS-Security, WS-Policy, WS-Trust, WS-SecureConversation……,令人目不暇接,在不断地向前发展。从另外一个方面也表示,Web Services技术目前在企业应用方面还不够成熟。
References:
1, MSDN, Web Services Enhancements, http://msdn.microsoft.com/webservices/building/wse/default.aspx
2, MSDN, Duwamish 7.0