在托管代码中访问 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 服务