而且,网络服务契约描述的是以术语报文形式提供的服务,这些服务是由网络服务生成和接受的,而并不描述服务是如何实现的。通过把重点放在报文上,网络服务模板对语言、平台和对象模板变得完全透明。这样,用任何一套编程语言、对象模型和平台的完全特性集,都可实现网络服务。网络服务可以在任何平台上,被任何应用程序所使用。只要用于解释服务容量、报文序列和所期望协议的契约得到认同,那么所实现的网络服务及网络服务用户就可相互不同,而不会影响会话另一端的应用程序。
网络服务模板对最小体系架构的要求很低,目的是确保网络服务在使用任何技术和编程语言的平台上实现和访问。对网络服务互用性的解决可以只依靠网络标准。然而,为了使应用程序更容易使用网络服务,简单地通过标准网络协议访问网络服务是不够的。当网络服务和网络服务使用者依靠标准的方式(如XML)表示数据和命令、表示网络服务契约、算出网络服务所提供的容量时,网络服务才会更加容易使用。
XML是定义一个标准的、可扩展的用于提供命令和典型数据的语言的明智选择。虽然为表示命令和典型数据可以定义使用其它技巧(比如编码为一种查询字符串)的规则,但XML被专门设计为描述数据的标准元语言。简单对象存取协议(SOAP)是以一种可扩展的方式使用XML表示数据和命令的工业标准。网络服务可选择用SOAP决定报文的格式。
XML是网络服务契约的一种常用技术。服务契约语言(SCL)是记录网络服务契约的XML语法。由于SCL是基于XML的,所以对开发者和开发工具来说,它更容易生成并解释契约。

图3 Services Framework类库
Disco规范为服务提供者发布网络服务契约和相应的机制描述了一个标准方式,这将使开发者或开发工具可找到契约文献。
象SOAP、SCL和Disco这样的标准有助于开发者,因为它们不需要明白和实现所使用的每一个网络服务的访问方式。支持这些标准的更好的、已充分测试的、高性能的体系架构将由开发平台提供,这会大大简化整个开发过程。
Microsoft.NET Framework
Microsoft.NET框架的目的是使你更容易建立网络应用程序和网络服务。图2显示了Microsoft.NET框架的体系结构。建立在操作系统最上层的服务,是管理运行代码需求的Common Language Runtime,这些代码可以用任何现代编程语言所编写。Runtime提供了许多服务,这些服务有助于简化代码开发和应用程序的开发,同时也将提高应用程序的可靠性。.NET Framework包括一套可被开发者用于任何编程语言的类库。在此之上是许多应用程序模板,这些模板为开发网络站点和网络服务提供了高级组件和服务,下面笔者将逐层描述。
Common Language Runtime
运行语言(Runtime)可以调用并运行任何编程语言所写的代码。以运行为目标的代码被称为受控(Managed)代码,受控代码只是意味着在内部可执行代码与自身代码存在已经定义好的合作契约。对于生成对象、调用方法等这样的任务,被委托给了运行语言,这使得运行语言能为可执行代码增加额外的服务。
运行语言具有交叉语言集成、自描述组件、简单配制、版本化以及集成安全服务等特点。
