您的位置:首页 > 编程语言 > ASP

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

2010-05-25 00:11 861 查看
在Web服务应用程序要初始化的容器和填充其依赖,需要来自应用程序类型的不同方法暴露用户接口(例如Windows Forms, WPF, and ASP.NET Web Forms)。本主题描述了ASP.NET的Web服务(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的自定义扩展
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐