ASP.NET XML Web services 基础知识

本主题专门介绍一项旧有技术。现在应通过使用以下链接来创建 XML Web 服务和 XML Web 服务客户端: Windows Communication Foundation.

ASP.NET 提供了实现 Web 服务内部功能的基础结构,这使得开发人员能够将精力集中于特定 Web 服务功能的实现上。若要使用 ASP.NET 启用 Web 服务,需要创建一个文件扩展名为 .asmx 的文件,然后在该文件中声明 Web 服务,同时还可以创建另一个文件来定义 Web 服务方法。演练:使用 ASP.NET 生成基本的 XML Web services 中列出了这些过程,本文将对这些过程加以详细说明。

声明 Web 服务

在 ASP.NET 中创建 Web 服务时,应将必需的 @ WebService 指令置于文件扩展名为 .asmx 的文本文件的开头。.asmx 文件和 @ WebService 指令的存在可使 Web 服务的 URL 地址与其实现关联起来。此外,还需要实现定义 Web 服务客户端可见的方法和数据类型的 Web 服务类。

您定义的 Web 服务类可以直接包括 .asmx 文件中,也可以包括在单独的文件中。如果使用单独的文件,则必须将该文件编译到某个程序集中。或者,也可以向实现 Web 服务的类应用 WebService 特性。实现 Web 服务的类可以从 WebService 类派生。

通过将可选的 WebService 特性应用于实现 Web 服务的类,可以在为 Web 服务设置默认的 XML 命名空间时使用字符串描述该 Web 服务。在使 Web 服务可以公开使用之前,强烈建议更改此默认命名空间(最初为 http://tempuri.org)。这一点很重要,因为必须将 Web 服务与其他可能不慎将该命名空间用作默认命名空间 (<http://tempuri.org/>) 的 Web 服务区分开。

实现用 ASP.NET 创建的 Web 服务的类可以选择从 WebService 类派生,以获得对公共 ASP.NET 对象的访问权限,例如 ApplicationSessionUserContextApplicationSession 属性可提供对整个 Web 应用程序生存期或特定会话的存储和接收状态的访问权限。有关状态管理的更多信息,请参见如何:在使用 ASP.NET 创建的 Web 服务中管理状态。启用身份验证后,User 属性将包含 Web 服务调用方的身份。利用这一身份,Web 服务可以确定请求是否已经过授权。有关身份验证的更多信息,请参见保证 XML Web services 的安全Context 属性可提供对有关 Web 服务客户端请求的所有 HTTP 特定信息的访问权限。有关 Context 属性的更多信息,请参见 WebService.Context 属性

定义 Web 服务方法

实现 Web 服务的类的方法不能自动接收 Web 服务请求和向回发送响应,但借助 ASP.NET 创建的 Web 服务,添加这一功能将十分简单。只需向公共方法应用 WebMethod 特性即可。可通过 Web 进行通信的 Web 服务类的方法称为 Web 服务方法。

Web 服务方法是 Web 服务使用的消息处理基础结构的关键部分。这就是说,客户端和 Web 服务默认使用消息(尤指 SOAP 消息)进行通信。客户端向 Web 服务发送 SOAP 请求,而 Web 服务方法通常会返回 SOAP 响应。Web 服务使用 Web 服务描述语言 (WSDL) 定义的操作来定义它们接受的消息类型。这些操作与 Web 服务中的每个 Web 服务方法相关联。在 ASP.NET 中,虽然每个 Web 服务方法都使用一个类方法定义,但需要注意的是,最终通过网络进行通信的数据必须序列化为 XML。因此,您需要记住,Web 服务并不是 DCOM 的替代,而是使用行业标准实现跨平台通信的一种消息处理基础结构。

另请参见

任务

演练:使用 ASP.NET 生成基本的 XML Web services

参考

WebService Class
WebServiceAttribute Class
WebMethodAttribute Class

其他资源

使用 ASP.NET 的 XML Web services