ASP.NET 2.0的一个更好的特点是它支持Web服务接口,你可以定义并且让该Web服务暴露逻辑接口,就象类的表现一样。为此,你需要用WebServiceBinding属性修饰你的接口并且经由WebMethod属性来暴露单个的接口方法。然后,你将有一个派生于这个接口的类并实现该接口,而且编译器将要求你支持该接口的所有方法。
[WebService(Name="IApplicationManager", Namespace="http://CredentialsServices", Description="IApplicationManager is used to manage applications. This web service is only the definition of the interface. You cannot invoke method calls on it.")] abstract class IApplicationManagerShim : IApplicationManager{ public abstract void DeleteApplication(string application); public abstract string[] GetApplications(); public abstract void DeleteAllApplications(); } 因为IApplicationManagerShim是一个类,所以你可以把它暴露为一个Web服务。因为它是一抽象类且所有方法被定义为抽象方法,所以不需要(也不能)实现任何方法。为了使其看起来就象该接口,IapplicationManagerShim把WebService属性的属性名设置为IApplicationManager(代替缺省的类名)。现在,你可以使用IApplicationManager.asmx文件来暴露该接口。