作为本书的最后一章,我们将介绍如何让应用与其他应用通信,从而延伸你的应用的触角。这种通信的原因有很多,可能是从一个提要抽取数据,如股票价格或天气信息,或者将数据集成到一个企业应用中,如远程下订单。通过集成企业应用,可以与其他组织合作,使用其服务,或者为他们提供服务;还可以与分布式应用合作,可能与远程办公室或同一个办公室中的多台机器协作。
本章将介绍如何在应用中结合Web服务,这包括为别人提供Web服务,或者使用别人提供的Web服务。具体地,我们将讨论以下主题:
q 如何使用Web服务在应用间通信。
q 如何创建供其他应用使用的Web服务。
q 如何使用其他应用提供的Web服务。
q 如何定制数据的传输。
这里还会对Web服务的一些新领域和将来的发展做一个简要介绍。
16.1 Web服务
一直以来,Web服务是一种“所向披靡”的技术,似乎是没有任何问题的一种完美方案。不过,如果更深入地分析应用通信,就会认识到,它确实存在着一个问题:应用间的通信很困难。分布式应用通常是紧耦合的,需要复杂的配置,而且往往使用专用的协议和数据类型。Windows应用不能与开源应用通信,至少倘若你想实现通信而且希望得来全不费功夫,那是不可能的。
彼此通信的两个应用要讲相同的语言,所以需要一个共同的协议。这个协议要为数据使用一种与平台无关的语言,而且要用这样一种语言描述所交换的数据。还需要一种适当的办法描述Web服务的接口,以便客户了解入口点。所有这些问题都很容易解决,而且为此已经发展了一组标准可供所有应用类型和平台使用。如果采用标准开发,将在HTTP上以XML格式完成数据传输。这样一来,在现有体系结构中,无需配置防火墙和路由器来打开额外的端口,Web服务就可以很容易地通信。
标准和互操作性
Web服务得到了越来越广泛的使用,使用标准是其中的一个关键。如果建立自己的服务,这意味着可以使用任何协议,但是一旦需要扩展你的应用,就必须做到共同性。当前使用的标准包括:
q HTTP,传输协议,通常使用TCP端口80,不过也可以使用其他端口。
q XML和XML Schema,数据格式和数据描述语言。
q 命名空间,唯一标识Web上的资源。
q SOAP,简单对象访问协议(Simple Object Access Protocol),这个协议定义了Web服务如何通信。SOAP描述了用于发送消息的一个简单的XML包。
q WSDL,Web服务描述语言,描述Web服务可以完成的操作,各个消息的模式,以及服务的端点(URL)。
q WS-I, Web服务互操作性组织,这个行业机构旨在增强Web服务之间的互操作性。WS-I的产品包括Profiles,其中定义了Web服务支持的基本功能。
q UDDI,统一描述、发现和集成(Universal Description, Discovery, and Integration),提供了一种发现Web服务的方法。
还有很多其他标准,其中一些使用得不多,不过以上这些都是核心的标准。通常情况下,你不需要深入了解其内部细节,因为Visual Studio 2005和ASP.NET已经抽象了这些标准的内部工作。







