Asp.net处理程序(第六篇)

四、Web服务处理程序

  对于Web服务来说,标准的方式是使用SOAP协议,在SOAP中,请求和回应的数据通过XML格式进行描述。在Asp.net 4.0下,对于Web服务来说,还可以选择支持Ajax访问,因此,Web服务的处理程序变得有一些复杂。为了同时支持者两种类型的请求处理,在Asp.net 4.0下,处理程序工厂采用了两级的结构,首先,通过标准的处理程序工厂来取得服务的处理程序,其次,在内部根据请求的内容来取得实际的处理程序工厂,最终,取得处理请求的处理程序。

  

  1、Web服务处理程序工厂

  在Asp.net 2.0中,对于Web服务的配置如下:

<add path="*.asmx" verb="*" type="System.Web.Services.Protocols.WebServiceHandlerFactory,System.Web.Services,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" validate="False" />

  在Asp.net 4.0中,为了同时兼顾在Ajax中对于Web服务的访问,系统中的Web服务修改为如下的配置形式:

<add path="*.asmx" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory,System.Web.Extensions,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e53" validate="False" />

  可以看到,Web服务处理程序工厂从WebServiceHandlerFactory变为了ScriptHandlerFactory。在ScriptHandlerFactory内部,定义了两个处理程序工厂。在ScriptHandlerFactory内部,当通过GetHandler方法获取一个处理程序对象实例的时候,将首先判断请求是否是一个REST请求,根据判断的结果来决定当前实际使用的处理程序工厂。

  REST表示表述性状态转移,定义了应该如下正确地使用Web标准,例如HTTP和URI。如果在设计应用程序时能坚持REST原则,那就预示着将会得到一个使用了优质Web架构的系统。

  2、使用Web服务处理程序

  对于Web服务的处理程序来说,每个Web服务将在服务器上创建一个对应的asmx扩展名的标记文件,例如,一个新创建的Web服务WebService1.asmx中可能包含如下的内容:

<% WebService Language="C#" CodeBehind="WebServicel.asmx.cs" Class="WebService1" %>

  在这个文件中,通过CodeBehind和Class说明了处理这个Web服务的代码文件和其中实现的Web服务的类名。

  当Web服务的处理工厂收到针对这个WebService1.asmx的请求的时候,将通过反射创建Class中说明的类的对象实例,并调用对应的方法完成服务的处理。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。