网络服务一览
通常说来,一个网络服务只是一个作为服务――通过 Internet 标准此服务能与其它
网络服务集成在一起――发行的简单的应用程序。换句话说,它是可通过 URL 定位的
自动将信息返回到需要它的客户端那里的一种资源。网络服务一个重要的特点是客户不
需要知道一种服务是怎样实现的。在本节中,我将向你解释网络及网络服务如何把基于
组件技术的最好的方面结合在一起的,并且介绍与网络服务通信所需的基本框架。
同组件一样,网络服务提供“黑匣子”函数,它可以被再次作用而不用关心此服务
是怎样实现的。网络服务提供被称为契约的精确定义的接口,此接口描绘了所提供的服
务。开发人员可以将远程服务、本地服务和定置代码组合在一起而集成应用程序。例如,
某公司可以使用如下服务组建一在线商店:微软护照(原文:Passport)服务以验证用
户身份,第三方个人化服务以使网页匹配每一个用户的参数,信用卡处理服务,销售税
服务,对每个运输公司的包裹跟踪服务,链接公司内部库存管理程序的内部目录服务,
以及少量定置代码以使他们的商店能脱颖而出。
然而,网络服务与现在的组件技术不同,它不使用需要在服务器和客户机有明确的、
同类型基本构架的具体的对象模型协议,例如 DCOM、 RMI 或 IIOP 。尽管与具体组
件技术紧密结合的实现在一个受控的环境中能很好地被接受,但它们在网络环境中变得
不切实际。因为一个集成商业程序的参与者会发生变化,随着时间的推移,技术也在变
化,所以在所有参与者间确保一个单一的、统一的体系架构就变得十分困难。网络服务
采取了另外一种途径,它使用普便存在的网络协议和数据格式,如 HTTP 和 XML,进
行通信。支持这些网络标准的任何系统都支持网络服务。
而且,网络服务契约描述的是以术语报文形式提供的服务,这些服务是由网络服务
生成和接受的,而不是描述服务是如何实现的。通过把重点放在报文上,网络服务模板
就完全对语言、平台和对象模板一无所知。 用任何一套编程语言、对象模型和平台的
完全特性集,都可实现网络服务。网络 服务可在任何平台被用任何语言所实现的应用
程序使用。只要用于解释服务容量、报文序列和所期望协议的契约得到认同,那么所实
现的网络服务及网络服务用户就可相互不同,而不会影响会话另一端的应用程序。
网络服务模板对最小体系架构的要求很低,以确保网络服务在使用任何技术和编程
语言的平台上实现和访问。对网络服务互用性的解决可只依靠网络标准。然而,为了使
应用程序更容易使用网络服务,简单地同意通过标准网络协议就可以访问网络服务是不
够的。当网络服务和网络服使用者依靠标准的方式表示数据和命令、表示网络服务契
约 、算出网络服务所提供的容量时,网络服务才容易使用。
XML 是定义一个标准的、可扩展的用于提供命令和典型数据的语言明显的一种选
择。虽然为表示命令和典型数据可以定义使用其它技巧(比如编码为一种查询字符串)
的规则,但 XML 被专门设计为描述数据的标准元语言。简单对象存取协议(SOAP)
是以一种可扩展的方式使用 XML 表示数据和命令的工业标准。网络服务可选择用
SOAP 决定报文的格式。
XML 是网络服务契约的一种使能技术。服务契约语言 (SCL)是记录网络服务契约
的 XML 语法。由于 SCL 是基于 XML 的,所以对开发者和开发工具来说,容易生成、
解释契约。关于SCL细则的草案很快会出台(注意:现在的SOAPToolkit for Visual Studio
6.0 支持称为 SDL 的 SCL 的早期版本)。
Disco 规范为服务提供者发布网络 服务契约和相应的机制描述了一个标准方式,
这将使开发者或开发工具可找到契约文献。当你读到这里时, Disco 规范的草案应出
台了。
象 SOAP, SCL 和 Disco 这样的标准有助于开发者,因为它们不需要明白和实现
所使用的每一个网络服务的访问方式。支持这些标准的更好的、已充分测试的、高性能
的体系架构将由开发平台提供,这会大大简化整个开发过程。
通常说来,一个网络服务只是一个作为服务――通过 Internet 标准此服务能与其它
网络服务集成在一起――发行的简单的应用程序。换句话说,它是可通过 URL 定位的
自动将信息返回到需要它的客户端那里的一种资源。网络服务一个重要的特点是客户不
需要知道一种服务是怎样实现的。在本节中,我将向你解释网络及网络服务如何把基于
组件技术的最好的方面结合在一起的,并且介绍与网络服务通信所需的基本框架。
同组件一样,网络服务提供“黑匣子”函数,它可以被再次作用而不用关心此服务
是怎样实现的。网络服务提供被称为契约的精确定义的接口,此接口描绘了所提供的服
务。开发人员可以将远程服务、本地服务和定置代码组合在一起而集成应用程序。例如,
某公司可以使用如下服务组建一在线商店:微软护照(原文:Passport)服务以验证用
户身份,第三方个人化服务以使网页匹配每一个用户的参数,信用卡处理服务,销售税
服务,对每个运输公司的包裹跟踪服务,链接公司内部库存管理程序的内部目录服务,
以及少量定置代码以使他们的商店能脱颖而出。
然而,网络服务与现在的组件技术不同,它不使用需要在服务器和客户机有明确的、
同类型基本构架的具体的对象模型协议,例如 DCOM、 RMI 或 IIOP 。尽管与具体组
件技术紧密结合的实现在一个受控的环境中能很好地被接受,但它们在网络环境中变得
不切实际。因为一个集成商业程序的参与者会发生变化,随着时间的推移,技术也在变
化,所以在所有参与者间确保一个单一的、统一的体系架构就变得十分困难。网络服务
采取了另外一种途径,它使用普便存在的网络协议和数据格式,如 HTTP 和 XML,进
行通信。支持这些网络标准的任何系统都支持网络服务。
而且,网络服务契约描述的是以术语报文形式提供的服务,这些服务是由网络服务
生成和接受的,而不是描述服务是如何实现的。通过把重点放在报文上,网络服务模板
就完全对语言、平台和对象模板一无所知。 用任何一套编程语言、对象模型和平台的
完全特性集,都可实现网络服务。网络 服务可在任何平台被用任何语言所实现的应用
程序使用。只要用于解释服务容量、报文序列和所期望协议的契约得到认同,那么所实
现的网络服务及网络服务用户就可相互不同,而不会影响会话另一端的应用程序。
网络服务模板对最小体系架构的要求很低,以确保网络服务在使用任何技术和编程
语言的平台上实现和访问。对网络服务互用性的解决可只依靠网络标准。然而,为了使
应用程序更容易使用网络服务,简单地同意通过标准网络协议就可以访问网络服务是不
够的。当网络服务和网络服使用者依靠标准的方式表示数据和命令、表示网络服务契
约 、算出网络服务所提供的容量时,网络服务才容易使用。
XML 是定义一个标准的、可扩展的用于提供命令和典型数据的语言明显的一种选
择。虽然为表示命令和典型数据可以定义使用其它技巧(比如编码为一种查询字符串)
的规则,但 XML 被专门设计为描述数据的标准元语言。简单对象存取协议(SOAP)
是以一种可扩展的方式使用 XML 表示数据和命令的工业标准。网络服务可选择用
SOAP 决定报文的格式。
XML 是网络服务契约的一种使能技术。服务契约语言 (SCL)是记录网络服务契约
的 XML 语法。由于 SCL 是基于 XML 的,所以对开发者和开发工具来说,容易生成、
解释契约。关于SCL细则的草案很快会出台(注意:现在的SOAPToolkit for Visual Studio
6.0 支持称为 SDL 的 SCL 的早期版本)。
Disco 规范为服务提供者发布网络 服务契约和相应的机制描述了一个标准方式,
这将使开发者或开发工具可找到契约文献。当你读到这里时, Disco 规范的草案应出
台了。
象 SOAP, SCL 和 Disco 这样的标准有助于开发者,因为它们不需要明白和实现
所使用的每一个网络服务的访问方式。支持这些标准的更好的、已充分测试的、高性能
的体系架构将由开发平台提供,这会大大简化整个开发过程。