在托管代码中访问 Web 服务的代码模型

更新:2007 年 11 月

Web 服务客户端是任何引用和使用 Web 服务的组件、服务或应用程序。值得注意的是,Web 服务客户端不必是基于客户端的应用程序(例如桌面应用程序);大多数情况下,Web 服务客户端可能是其他 Web 应用程序,甚至是其他 Web 服务。

当访问托管代码中的 Web 服务时,代理类和 .NET Framework 处理所有结构编码。访问 Web 服务时请遵循以下基本步骤:

  • 找到要访问的 Web 服务。

  • 通过将 Web 引用添加到项目创建 Web 服务的代理类。

  • 通过包括代理类的命名空间在客户端代码中引用代理类。

  • 在客户端代码中创建 Web 服务代理类的实例。

  • 使用代理的方法访问 Web 服务。

有关更多信息,请参见 如何:在托管代码中访问 Web 服务如何:异步访问托管代码中的 Web 服务

找到 Web 服务并添加 Web 引用

为了简化编码模型,用托管代码编写的应用程序使用 Web 引用在本地表示每个 Web 服务。使用“添加 Web 引用”对话框将 Web 引用添加到项目。此对话框支持浏览 Web 服务的 Web 地址。有关更多信息,请参见找到 Web 服务Web 引用

引用代理类

生成的代理类具有自己的与其关联的命名空间,在创建该类的实例之前,您必须将该命名空间添加到客户端应用程序。有关更多信息,请参见 using 指令 (C#) 或引用和 Imports 语句 (Visual Basic .NET)。

创建代理类的实例

在可以调用代理类的任何方法之前,您必须首先创建该类的实例。该过程与创建任何其他类的实例没有什么根本的不同。有关更多信息,请参见 new (C#) 或对象变量声明 (Visual Basic .NET)。

使用代理访问 Web 服务

为了访问 Web 服务方法,客户端应用程序会调用代理对象的相应同步方法或异步方法。这些方法又进行必要的操作,通过网络远程控制调用以调用所需的 Web 服务方法。默认情况下,代理类使用 SOAP 来访问 Web 服务方法,这是因为 SOAP 支持三种受支持协议(HTTP-GET、HTTP-POST 和 HTTP-SOAP)的最丰富的数据类型集。有关更多信息,请参见 XML Web services 连网格式

汇总

使用 Visual Studio 直接从 Web 服务的服务说明生成的代理类,从托管代码访问 Web 服务是一个相对简单的过程。代理类将方法调用转换为请求消息,并将响应消息转换回方法返回值。

下图显示的关系为:应用程序调用 Web 服务,而该 Web 服务又调用另一个 Web 服务以获得价格信息。在此例中,Get Current Prices Web 服务既是 Web 服务提供方又是 Web 服务使用方。

Web 服务客户端和 Web 服务
动画 Web 服务客户端

请参见

概念

生成 XML Web services 客户端

其他资源

在托管代码中访问 Web 服务