繁体   English   中英

在ASP.NET MVC3中添加Web服务的设计模式

[英]design pattern for adding a web service in ASP.NET MVC3

首先-我不是问这个问题如何在MVC3中托管Web服务? 我知道按钮在哪里:-)

我正在尝试找到一个最佳实践示例,该示例是如何使用新的DI /公共服务定位器框架以使Web服务调用(以及依赖于Web服务调用的代码)可测试的。 我没有使用NInject或类似工具的经验-那是要走的路吗?

与处理任何外部依赖关系的方式几乎相同-将其包装在接口中,使控制器将接口的实例作为构造函数参数。 在实现方面,您可以通过多种方式处理问题,通常我们使服务包装器将服务视为服务的依赖项,并让结构图担心生命周期。 对NInject并不十分熟悉,所以我不确定那里是否有更好的方法,但是我怀疑它们具有类似的功能。

我不知道最佳做法是什么,但是我认为您可以使用温莎的WCF工具(Ninject也具有WCF扩展名 )来做到这一点。 注册您的服务,然后设置您的依赖项解析器,并让MVC的依赖项解析器进行艰苦的工作,例如构造函数注入:

注册您的服务:

container = new WindsorContainer().AddFacility<WcfFacility>();

container.Register(Component
    .For<IService>()
    .On(WcfEndpoint.FromConfiguration("...")))
    .LifeStyle.Transient);

设置依赖解析器:

DependencyResolver.SetResolver(new WindsorDependencyResolver(container));

然后,MVC3的新依赖项解析器应该能够将服务代理注入到构造函数中,例如:

public HomeController(IService service)
{
    // ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM