使用托管代码进行 Web 服务编程简介

使用 Web 服务,可以在异类系统之间以 XML 消息的形式交换松耦合数据。 虽然远程访问数据和应用程序逻辑不是一个新概念,但以松耦合的方式执行该操作却是一个全新的方式。 以前的尝试(例如 DCOM、IIOP 和 Java/RMI)要求在客户端和服务器之间进行紧密集成。 它们使用的是操作系统和实现特定的二进制数据格式,而不是使用作为 Web 服务基础的基于 XML 的协定。

虽然 DCOM、IIOP 和 Java/RMI 要求特定组件技术或对象调用约定,但 Web 服务却不需要。 在客户端和服务器之间所做的唯一假设就是接收方可以理解收到的消息。 换句话说,客户端和服务器均同意某个协定,在本示例中,该协定是指使用 WSDL 和 XSL 架构定义 (XSD) 定义的协定。 然后,客户端和服务器通过在指定的传输协议(例如 HTTP)上生成遵守该协定的消息来进行通信。 因此,用任何语言编写、使用任何组件模型并在任何操作系统上运行的程序,都可以访问 Web 服务。 此外,灵活的文本格式(如 XML)可以使消息交换能够随时间的推移以松耦合方式进行发展。 在不可能同时更新消息交换中所有方的环境中,这种松耦合是强制的。

保留此技术是为了向后兼容现有应用程序,不建议在新开发中使用此技术。有关建议的替代项的信息,请参见以下内容:
 Visual Studio 中的 Windows Communication Foundation 服务和 WCF 数据服务

Web 服务和 .NET Framework

如果使用基于 ASP.NET 和 .NET Framework 的托管代码来创建 Web 服务,则无需编写“基础结构代码”即可处理详细信息(如通信协议或消息传输)。 此外,如果创建使用 ASP.NET 页框架的 Web 服务,则您的服务可以使用 .NET Framework 的许多功能,如身份验证、缓存和状态管理。

在 ASP.NET 应用程序模型中,网页将使用 .aspx 扩展名。 为了区分 Web 服务和常规 ASP.NET 页,Web 服务使用 .asmx 扩展名。

若要使用 Web 服务促进双向数据交换,开发人员必须:

  • **创建 Web 服务。**当您创建 XML Web service 时,您是在创建一个向 XML Web service 客户端公开功能的应用程序。

  • 访问 Web 服务。 当您访问 Web 服务时,客户端应用程序将查找、引用和使用该 Web 服务中包含的功能。 通常,XML Web service 的客户端为一个应用程序。 此应用程序能够发送、接收和处理来自或发给 Web 服务的消息。

  • 同一个开发人员无需创建一个 Web 服务,然后访问该服务。 有些 Web 服务(例如,通信信息服务)可能由单个实体(例如,省/市/自治区交通部门)创建。 但是,可以通过多个网站(例如,货运公司的网站)访问此服务。

Web 服务既可以是独立的应用程序,也可以是较大型 Web 应用程序的子组件。 例如,假设您创建一个在线销售图书的 Web 应用程序。 您的 Web 应用程序可能按如下方式使用 Web 服务:

  • 创建 Web 服务。 您的应用程序将其订单处理逻辑作为 Web 服务公开。 分支机构的网站会通过在线销售图书的 Web 应用程序访问此服务。

  • **访问 Web 服务。**您的应用程序访问由另一家专门为在线书商编写图书评论的公司开发的 Web 服务。 当您的在线书店的访问者查看特定图书的价格时,他们还可以在同一页上看到这本书的书评。

请记住,您可以从各种不同类型的应用程序(包括其他 Web 服务、Web 应用程序、Windows 应用程序和控制台应用程序)访问 Web 服务。 但是,客户端必须能够向 Web 服务发送消息。