微软企业库5.0学习笔记(11)WCF和ASP.NET Web服务应用程序

Web服务应用程序要初始化的容器和填充其依赖,需要来自应用程序类型的不同方法暴露用户接口(例如Windows Forms, WPF, and ASP.NET Web Forms)。本主题描述了ASP.NETWeb服务(ASMX)可能的解决方案和资源,帮助您实现在WCF应用程序。

    ASP.NET Web服务应用程序

ASP.NET Web服务应用程序可以部分的使用主题ASP.NET Web窗体应用程序中的方法。您可以添加类HttpApplicationState的扩展方法的创建和公开容器,代码添加到应用程序的Global.asax文件中添加代码将企业库扩展加到容器中。不过,由于有在ASMX应用中没有没有UI控件,您不能像ASP.NET Web窗体应用程序描述那样使用HTTP模块。

       不过,你可以调用HttpContext.Current.Application.GetContainer()扩展方法访问容器。 你可以容器的引用通过当前类的BuildUp方法填充你通过属性定义的依赖例如,下面的代码使用依赖注入,解决实现了ImyService口的类的实例,并使用它来计算UseDataService方法返回的值

 

using System.Web; public class MyWebService : System.Web.Services.WebService { private IMyService theService; public MyWebService() { // Pass this class through the container using the BuildUp method HttpContext.Current.Application.GetContainer().BuildUp(this); } [Dependency] public IMyService DataService { get { return theService; } set { theService = value; } } [WebMethod] public string UseDataService() { return "The value you require is " + theService.DoSomething(); } }

 

 

 

           作为选择,你可以使用ASP.NET Web窗体应用程序中的展示的基本方法,创建并组装在Application字典对象中的容器,然后再需要的时候通过你的web方法来访问它

    WCF应用程序

    WCF你可以使用与此主题中描述的基本方针类似的技术。然而,在WCF中没有存储的HttpApplication状态。代替的方法,你可以使用具有InstanceContextMode InstanceContext ,它被设为单例,并适用于所有的请求。你必须通过实现Iextension接口创建的InstanceContext的自定义扩展

你可能感兴趣的:(微软企业库5.0学习笔记(11)WCF和ASP.NET Web服务应用程序)