当前位置: 首页 > 图文教程 > .Net技术 > ASP.NET > ASP.NET:ASP.NET创建Web服务之声明XML Web服务

ASP.NET
VS2008SP1下jQuery使用初体验
使用asp.net 2.0中的SqlBulkCopy类批量复制数据
asp.net定点执行任务总结
通过webBrowser 来轻松模拟网页来源
ASP.NET框架 数据回发与事件回发
浅谈ASP.NET内部机制
通用语言规范
GC垃圾回收
ASP.NET 配置
ASP.NET 安全认证
ASP.NET生成复合控件
asp.net中forms验证
DataTable中数据记录的统计
关于无aspx文件部署,我的一些探索心得
ASP.NET刷新页面的六种方法
ASP.NET MVC应用程序的本地化、单元测试
详解ASP.NET的四种状态
.NET与Java间进行Web Service交互的选择
自己动手实现Asp.net的MVC框架
ASP.net中网站访问量统计方法

ASP.NET:ASP.NET创建Web服务之声明XML Web服务


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 87 ::
收藏到网摘: n/a

声明一个XML Web服务
  当你使用ASP.NET创建一个XML Web服务时,你要把所需的@_WebService指令放到.asmx文件的最顶端。.asmx文件的存在和@_ WebService指令与所实现的XML Web服务的URL地址相关。接下来,你实现XML Web服务类来定义XML Web服务客户端可见的方法和数据类型。最后,你把你的XML Web服务逻辑添加到那些方法上,以便处理XML Web服务请求和返回的响应。你定义的XML Web服务类可以直接被包含在.asmx文件中,也可以包含在一个单独的文件中。如果你使用一个独立的文件,它必须被编译为二进制码。你可以选择应用一个 WebService属性到这个类上,来实现XML Web服务。实现XML Web服务的类可以继承于WebService类。
  
  声明一个XML Web服务,这个服务的实现存在于同一个文件。
  
  添加一个@_WebService指令到一个.asmx文件的顶部,规定在这个实现中实现XML Web服务的类和程序语言。
  
  Class属性可以被设置为和@_WebService指令同一个汇编文件,或者是单独汇编文件中的一个类。如果这个类存在于一个独立汇编文件中,它必须放在XML Web服务所在的Web应用程序目录下的\Bin目录中。Language属性可以设置为C#、VB和JS,分别表示C#、Visual Basic.NET和JScript.NET。
  
  下列代码示例设置@_ WebService指令的Language属性为C#,Class属性为MyMath,保存在同一个文件中。
  
  <%@ WebService Language="C#" Class="MyMath" %>
  using System.Web.Services;
  public class MyMath {
  [ WebMethod ]
  public int Add(int num1, int num2) {
  return num1+num2;
  }
  }
  声明一个XML Web服务,这个服务的实现存在于一个汇编文件中。
  
  添加一个@_WebService指令到一个.asmx文件的顶部,规定实现XML Web服务的类,汇编文件中包含的实现和在这个实现中使用的程序语言。
  
  下面的@_WebService指令是一个.asmx文件中唯一的一行代码,指定了MyName.MyWebService类存在于XML Web服务的Web应用程序下\Bin目录中的MyAssembly汇编文件中。
  [C#]
  <%@ WebService Language="C#" Class="MyName.MyWebService,MyAssembly" %>
  [Visual Basic]
  <%@ WebService Language="VB" Class="MyName.MyWebService,MyAssembly" %>
  
  声明一个XML Web服务,这个服务的实现存在于一个汇编文件中。
  
  添加一个@_WebService指令到一个.asmx文件的顶部,规定实现XML Web服务的类,汇编文件中包含的实现和在这个实现中使用的程序语言。
  
  下面的@_WebService指令是一个.asmx文件中唯一的一行代码,指定了MyName.MyWebService类存在于XML Web服务的Web应用程序下\Bin目录中的MyAssembly汇编文件中。
  
  注意:如果你不在@_ WebService指令中指定一个汇编,那么ASP.NET在XML Web服务第一次被访问的时候搜寻存放XML Web服务的Web应用程序的\Bin目录下汇编文件的列表。所以,如果你提供汇编文件名,你将改善第一次访问时的系统性能。
  
  应用WebService属性
  
  通过应用可选的WebService属性到实现一个XML Web服务的类上,你可以使用一个描述XML Web服务的字符串来设置这个XML Web服务的默认XML域名空间。
  
  强烈建议这个默认域名空间(此处为http://tempuri.org)在XML Web服务公开使用前被修改。这是很重要的,因为你的XML Web服务必须和其他的无意中使用默认值作为域名空间的XML Web服务区分开来。
  
  设置成员XML Web服务的XML域名空间
  
  应用一个WebService属性到实现XML Web服务的类,设置Namespace属性。
  
  下面的代码示例设置XML域名空间为http://www.contoso.com/。
  [C#]
  <%@ WebService Language="C#" Class="Math" Debug=true%>
  using System.Web.Services;
  using System;
  
  [WebService(Namespace="http://www.contoso.com/")]
  public class Math {
   [ WebMethod ]
   public int Add(int num1, int num2) {
    return num1+num2;
   }
  }
  [Visual Basic]
  <%@ WebService Language="VB" Class="Math"%>
  Imports System.Web.Services
  Imports System
  
  <WebService(Namespace:="http://www.contoso.com/")> _
  Public Class Math
   <WebMethod()> Public Function Add(num1 As Integer, num2 As Integer) As Integer
   Return num1 + num2
  End Function
  End Class
  
  从WebService类衍生
  使用ASP.NET创建的实现一个XML Web服务的类可以选择性地衍生于WebService类来获得访问公共的ASP.NET对象,例如Application、Session、User和 Context的权限。Application和Session属性提供保存和接收Web应用程序的生命周期或一个特定的会话的状态的权限。想获得关于状态的更多的信息,请看在使用ASP.NET创建的XML Web服务中管理状态一节。User属性包含了XML Web服务调用者的身份。XML Web服务可以使用调用者身份来判定请求是否被授权。有关验证的更多信息,请看加强XML Web服务安全一节。Context属性提供了取得XML Web服务客户端请求的所有特定HTTP信息的权限。
  
  下面的代码示例使用Context属性来获得服务器上的请求时间。
  [C#]
  <%@ WebService Language="C#" Class="Util" %>
  using System;
  using System.Web.Services;
  
  public class Util: WebService {
   [ WebMethod(Description="Returns the time as stored on the Server",EnableSession=false)]
   public string Time()
   {
    return Context.Timestamp.TimeOfDay.ToString();
   }
  }
  [Visual Basic]
  <%@ WebService Language="VB" Class="Util" %>
  Imports System
  Imports System.Web.Services
  
  Public Class Util
  Inherits WebService
  
  <WebMethod(Description := "Returns the time as stored on the Server", _
  EnableSession := False)> _
  Public Function Time() As String
  Return Context.Timestamp.TimeOfDay.ToString()
  End Function
  End Class
  
  定义XML Web服务方法
  用来实现XML Web服务的类的方法不能自动通过Web与之通讯,但是有了使用ASP.NET创建的XML Web服务,就能够很容易的天家这种能力。为了添加这种功能,需要应用一个WebMethod属性到公共方法中。能够通过Web与之通讯的XML Web服务的方法被称为XML Web服务方法。
  
  XML Web服务方法是XML Web服务使用的消息传递基础结构的关键组成部分。说得更精确些,一个客户端和一个XML Web服务使用消息,尤其是SOAP消息进行通讯。客户端发送一个SOAP请求到XML Web服务中,而一个XML Web服务方法返回一个SOAP响应。XML Web服务定义了它使用操作接受的消息类型,正如Web服务描述语言中定义的那样。这些操作与一个XML Web服务中的每个XML Web服务方法关联。 即使这些XML Web服务方法中的每一个都是在ASP.NET使用一个类的方法定义的,但要实现通过网络传送的数据,必须把数据序列化为XML。同样地,重要的是要记得 XML Web服务并不能取代DCOM,我们应该说XML Web服务是跨越使用行业标准的平台通信的一种消息传递基础结构。
  
  声明一个XML Web服务方法
  声明一个XML Web服务,添加@_WebService指令。更多信息,请看声明一个XML Web服务一节。
  
  添加公共方法到实现XML Web服务的类中。
  
  应用WebMethod属性到你想要映射到操作的公共方法。
  
  下面的代码示例有两个公共方法,其一是一个XML Web服务方法。Multiply方法是一个XML Web服务方法,因为它有一个应用到它上的WebMethod属性。
  [C#]
  <%@ WebService Language="C#" Class="Util" %>
  using System;
  using System.Web.Services;
  public class Util: WebService
  {
   public int Add(int a, int b)
   {
    return a + b;
   }
  
   [ WebMethod]
   public long Multiply(int a, int b)
   {
    return a * b;
   }
  }
  [Visual Basic]
  <%@ WebService Language="VB" Class="Util" %>
  Imports System
  Imports System.Web.Services
  Public Class Util
  Inherits WebService
  
  Public Function Add(a As Integer, b As Integer) As Integer
  Return a + b
  End Function
  
  < WebMethod()> _
  Public Function Multiply(a As Integer, b As Integer) As Long
  Return a * b
  End Function
  End Class