在应用开发层面上微软.NET 战略中最重要的组成部分就是对Web Service 的支持和
实现那么首先究竟什么是Web Service 呢
从开发人员的角度看我们一直都在使用着各种各样的Services 这些服务来自操作
系统或者来自其他组件在桌面应用开发阶段我们通过集成本地系统服务的方式来开
发应用程序例如在DOS 时代我们编写底层系统软件的时候我们使用诸如中断的服务
在Windows 桌面时代我们使用Windows 操作系统提供的API 函数这些也是操作系统
为我们提供的服务开发人员对这些服务的控制是相当精确的
现在开发人员已经在很大程度上摆脱了这种开发模式的束缚我们已经有了
Client/Server 结构来实现分布式的两层结构的应用程序有了DCOM Distributed Component
Object Model 组件对象模型等技术来实现分布对象计算中跨系统间的组件对象调用和传
输在组件时代我们使用自己开发的或者第三方厂商提供的COM 组件或其他组件提供
的服务来构建复杂的N 层体系我们使用服务的目的有很多可能出于系统建模的考虑
可能出于软件重用的目的也可能是我们的优秀品质懒惰往往我们不喜欢做些重复的
工作因此当有人提供了某些服务并且这些服务恰好能满足我们的需求时我们倾向于
购买和使用这些服务这样开发人员可以将注意力集中在商业逻辑的设计和开发上而
不必为软件的基础结构如不同组件间的相互通讯而操心从而缩短软件开发周期提
高开发效率
然而这些技术在异构系统中仍然很难得以应用这是因为在现在的世界里存在多个
分布对象计算的标准包括微软公司的COM/DCOM/COM+ OMG 组织的CORBA Common
Object Request Broker Architecture 和SUN 公司的Java RMI Java Remote Method
Invocation EJB Enterprise Jave Beans 等标准这些技术要求服务器和客户端必须是同
质的基础体系尽管在Windows 平台上COM/DCOM/COM+技术被广泛应用在非Windows
平台上所受的支持却极为有限CORBA 技术是OMG 组织制定的一个协议但不同厂商的
CORBA 实现往往不同并引入了各自特有的某些特性因此当开发人员使用了这些特性
时构建出来的应用程序的可扩展性便受到抑制使用Java RMI 和EJB 则将开发人员绑定
在Java 语言上另外使用分布对象组件技术时当任何一端接口发生变化另一端的程ഊ
第9 章 新一代的组件Web Services ▊
▊ PAGE 194
序必须相应作出变动否则两端的通讯将会失效在互联网时代这些技术的这种相对紧
耦合性无法适应基于Internet 计算要求的松散性Internet 使得众多的企业信息系统的互相
沟通成为可能但这种沟通不可能构建在一个统一的系统类型之上因为作为开发人员
我们很难预见到与我们开发的企业级信息系统通讯的其他企业的系统类型和接口的变化
我们无法确保另一个使用的是某个操作系统某种对象模型或某种编程语言
而Web Service 技术是一种基于标准的Web 协议的可编程组件a programmable
application component accessible via standard web protocols 我们可以把Web Service 看作
Web 上的组件Web 服务提供者开放一系列API 开发人员通过调用这些API 来集成Web
服务构建自己的应用程序这种调用和从前的本地服务调用是很接近的不同在于调用
的服务存在于某个远程系统上我们不关心这个远程系统是在地球的另一端还是在隔壁的
屋子里因为本质上来讲我们使用域名和IP 来访问这些系统这种调用也和从前的组件对
象调用很接近不同在于这些调用是基于消息机制和标准的Web 协议之上的如HTTP
SMTP 等基于消息的异步技术因此它们可以轻易的穿过企业的防火墙并具有相当大的可
扩展性
Web Service 包含了服务发现Discovery 服务描述Description 连接格式Wire
Format 三个阶段服务发现阶段指的是发现和定位某个服务并获取关于其能力的信息
服务发布者通过一个XML 格式的disco 文件来提供给服务使用者在程序中发现服务的能
力服务描述阶段使用某些语言例如基于XML 的WSDL Web Services Description
Language 语言来获取该服务的调用规范等信息根据WSDL 语言中描述的连接格式采
用标准的Web 协议如HTTP-POST HTTP-GET SOAP MIME 等来实现服务提供者和使
用者之间的通讯包括描述服务请求服务和相应服务
软件成为一种服务提供这是倡导已久的论调在基于Internet 计算的时代XML 技
术使我们可以构建大型的可以被任何设备任何地点使用的应用这使得软件被作为一
种服务来提供成为可能我们已经在各种各样的信息服务例如移动电话便是一种典型
的信息服务我们预订需要的服务基础服务是接听和发出电话呼叫扩展服务包括天气
预报信息股票信息E-mail 服务等等然后使用这些服务在软件作为服务提供的时代
我们预订需要的软件例如办公软件然后使用它们使用者不必再为软件的安装和配置
操心开发人员的维护工作将更简便开发周期也将更短
Web Service 将是把这种梦想变为现实的第一步Web Service 可以基于XML 技术从
而这种服务可以是自描述的这样一来通讯双方将不必事先掌握对方的许多信息如调
用的接口的详细信息等等通讯前双方之间的了解越少双方的系统构建就会更为灵活
更具可扩展性在B2B 电子商务的数据交换中Web Ser vi ce 技术可以解决不同商业系统间
的互操作问题
例如网上零售商店的应用系统集成了多个供货商的供货服务如果这些服务均以Web
Service 的方式提供我们只需通过Web 标准协议和各个供货商的系统通讯来收发消息这
些消息是基于XML 的因此双方系统可以轻易地从XML 流中识别出订货信息只要这些
信息是符合某个格式可以通过XML Schema 等标准来定义这些格式而不必考虑对方的
防火墙对方的操作系统等等细节问题我们的信息系统也将随时迎接新的供货商加入而ഊ
▊ 第9 章 新一代的组件Web Services
不必作出很大的修改无论新的供货商是使用什么具体的接口技术我们只需和对方进行
通讯层上的接触
因此我们大致可以看到Web Service 实际是一种构建在Web 上的组件编程技术当前
来讲我们已经有一些构建Web Service 应用的工具例如Microsoft Visual Studio.NET
Interprise Delphi 6 IBM Web Service Toolkit 其中Microsoft Visual Studio.NET 提供了构
建基于.NET Framework 的Web Services 的强大工具套件
在服务发现的层面上由Microsoft 和IBM 提出的UDDI 规范Universal Description,
Discovery and Integration 统一描述发现和集成协议正在制定中UDDI 是一套基于Web
的分布式的为Web 服务提供信息注册中心的实现标准规范同时也包含一组使企业能
将自身提供的Web 服务注册以使得别的企业能够发现的访问协议实现标准在Web Ser vi ce
的最初阶段现有商业伙伴间的Web Ser vi ce 位置是已知的这种方法很难提供一种寻找可
以提供所需要的服务的商业伙伴的机制另一种发现服务的方法是在网站上放置服务描述
文件这样可以通过网络爬虫程序来发现这些服务然而这种方式很难跟踪服务描述的变
化
UDDI 提供了一种基于分布式的注册中心的方法各个Web Ser vi ce 可以在任何一个
UDDI 注册中心上提交注册服务的信息每个UDDI 注册中心都维护一个注册信息的全集
因此这些UDDI 注册中心构成一个分布式的P2P 对等网以此来同步服务的全目录 并且
这些信息描述的格式是基于通用的XML 格式的服务用户可以通过任何一个UDDI 注册
中心的页面或通过其开放的API 接口UDDI 中心同样是一种Web Ser vi ce 来搜索获得
Web Service 的位置和技术信息
UDDI 的规范正在制定阶段在本书撰稿时UDDI 组织已经制定并发布了UDDI
Specification V2 的开放草案详细的信息可以从www.uddi.org 获得
关键词:啥是Web Service