public class WebService1 : System.Web.Services.WebService
public class WebService : MarshalByValueComponent
public class MarshalByValueComponent : IComponent, IDisposable, IServiceProvider
Asp.Net Web Service是基于Asp.Net管道的,
“处理请求的类必须实现IHttpHandler”,这句话的理解不要太狭隘了,它的意思是所有HTTP请求的处理器都实现了IHttpHandler,如果你要编写一个能够直接处理请求的处理器,你需要实现IHttpHandler。但是,在实现了的处理器内部,可以通过一定的模式来分发请求到实际的处理流程。
注意上面的继承链,实现了 IServiceProvider,因此,处理asmx的handler可以通过url来决定使用哪个IServiceProvider来处理请求。因此,从实际的 WebService1 中看不到 IHttpHandler 的影子,但它却可以响应请求。
asmx的handler封装了web service协议,这样,可以给实际的实现服务提供类型化的参数,阻止开发人员直接面对web service协议,简化了开发人员实际开发web service的难度。