XML Web services 实现了在异类系统之间以 XML 消息的形式进行数据交换。虽然远程访问数据和应用程序逻辑不是一个新概念,但以松耦合的方式执行该操作却是一个全新的概念。以前的尝试(例如 DCOM、IIOP 和 Java/RMI)要求在客户端和服务器之间进行紧密集成,并使用平台和实现特定的二进制数据格式。虽然这些协议要求特定组件技术或对象调用约定,但 XML Web services 却不需要。在客户端和服务器之间所做的唯一假设就是接收方可以理解收到的消息。换句话说,客户端和服务器同意一个协定(在此所述的情况下,使用 WSDL 和 XSD),然后通过在指定的传输协议(例如 HTTP)之上生成遵守该协定的消息来进行通信。因此,用任何语言编写、使用任何组件模型并在任何操作系统上运行的程序,都可以访问 XML Web services。此外,使用文本格式(如 XML)的灵活性使消息交换随时间的推移以一种松耦合的方式进行进化成为可能。在不可能同时更新消息交换中所有方的环境中,这种松耦合是强制的。
通过使用 ASP.NET 页框架创建 XML Web services,可以使这些 XML Web services 访问 .NET Framework 的许多功能,例如身份验证、缓存和状态管理。由于 ASP.NET 和 .NET Framework 是托管代码中的 XML Web services 的基础,因此开发人员可以着重创建或访问 XML Web services,而无需编写基础结构代码。
在 ASP.NET 应用程序模型中,计划用于浏览器的网页使用 .aspx 扩展名。为了区分 XML Web services 和常规 ASP.NET 页,XML Web services 使用 .asmx 扩展名。
XML Web services 由两部分组成:XML Web services 入口点和实现 XML Web services 功能的代码。在 ASP.NET 中,.asmx 文件是用作 XML Web services 的可寻址入口点的文本文件。它引用预编译的程序集中的代码、代码隐藏文件或包含于 .asmx 文件本身的代码。
注意 |
---|
如果代码直接包含在 .asmx 文件中,则 ASP.NET 将在需要时在服务器上对其进行编译。 |
在 .asmx 文件顶部的 WebService 处理指令确定在何处查找 XML Web services 的实现。默认情况下,当使用 ASP.NET Web 服务项目模板创建 XML Web services 时,Visual Studio 使用代码隐藏文件,例如 Service1.asmx.vb 或 Service1.asmx.cs。
注意 |
---|
Visual Studio 不支持跨语言编译。例如,将 Visual C# XML Web services 包括在 Visual Basic ASP.NET Web 应用程序项目中是不能实现的,反之亦然。 |
当生成托管代码中的 XML Web services 时,ASP.NET 自动提供基础结构并处理 XML Web services 请求和响应的处理工作,其中包括分析和创建 SOAP 消息。
WebService 处理指令
.asmx 页的顶部是 WebService 处理指令,它包括以属性形式表示的有关 XML Web services 实现的信息。该处理指令向 ASP.NET 环境提供必要的信息,例如哪个类实现 XML Web services 功能。