举个小例子,谢谢了
用 ASP.NET 创建的 XML Web services
ASP.NET 使用 .asmx 文件提供 XML Web services 支持。.asmx 文件是类似于 .aspx 文件的文本文件。这些文件是包含 .aspx 文件的 ASP.NET 应用程序的一部分。与 .aspx 一样,这些文件是 URI 可寻址的。
以下示例说明了一个非常简单的 .asmx 文件。
C#:
<%@ WebService Language="C#" Class="HelloWorld" %>
using System;
using System.Web.Services;
public class HelloWorld : WebService {
[WebMethod] public String SayHelloWorld() {
return "Hello World";
}
}
VB:
<%@ WebService Language="VB" Class="HelloWorld" %>
Imports System
Imports System.Web.Services
Public Class HelloWorld :Inherits WebService
<WebMethod()> Public Function SayHelloWorld() As String
Return("Hello World")
End Function
End Class
此文件以一条 ASP.NET 指令 WebService 开始,然后将语言设置为 C#、Visual Basic 或 JScript。接着,它导入命名空间 System.Web.Services。必须包括此命名空间。接下来,声明 HelloWorld 类。此类是从基类 WebService 派生的;请注意,可以选择是否从 WebService 基类派生。最后,可作为服务一部分访问的所有方法的签名前都有一个属性,该属性具体取决于不同语言:在 C# 中为 [WebMethod],在 Visual Basic 中为 <WebMethod()>,在 JScript 中为 WebMethodAttribute。
为使此服务可用,我们可以将该文件命名为 HelloWorld.asmx,并将其放置到名为 SomeDomain.com 的服务器上名为 someFolder 的虚拟目录内。使用 Web 浏览器,然后就可以输入 URL http://SomeDomain.com/someFolder/HelloWorld.asmx,生成的页将显示此 XML Web services(用 WebMethod 属性标记的服务)的公共方法,以及可用来调用这些方法的协议(例如 SOAP 或 HTTP GET)。
将地址 http://SomeDomain.com/someFolder/HelloWorld.asmx?WSDL 输入到 浏览器中,这将返回一个 Web 服务描述语言 (WSDL) 文档。此 WSDL 文档非常重要,并且不能 由访问该服务的客户端使用。
访问 XML Web services
除了 ASP.NET 服务器端的技术允许开发人员创建 XML Web services 之外,.NET Framework 还提供了一组高级的工具和代码来使用 XML Web services。由于 XML Web services 是基于如简单对象访问控件 (SOAP) 之类的开放式协议的,因此也可以利用这项客户端技术来使用不是由 ASP.NET 创建的 XML Web services。
在 SDK 中,有一个 Web 服务描述语言工具 (WSDL.exe)。此命令行工具用于从 WSDL 创建 代理类。例如,您可以输入:
WSDL http://someDomain.com/someFolder/HelloWorld.asmx?WSDL
来创建一个名为 HelloWorld.cs 的代理类。
该类与前一节中创建的类非常相似。它将包含返回字符串的名为 SayHelloWorld 的方法。如果将该代理类编译到应用程序中,然后调用其方法,则它会对一个通过 HTTP 的 SOAP 请求进行打包并接收以 SOAP 方式编码的响应(该响应随后将作为字符串被封送)。
从客户端的角度来看,代码简单明了,如下例所示。
C#:
HelloWorld myHelloWorld = new HelloWorld();
String sReturn = myHelloWorld.SayHelloWorld();
VB:
Dim myHelloWorld As New HelloWorld()
Dim sReturn As String = myHelloWorld.SayHelloWorld()
返回的信息将是"Hello World"。