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
技术目前在企业应用方面还不够成熟。