我有一个3层应用程序。前台,业务,数据层。 我使用Microsoft Unity作为依赖容器。 我已经使用NUnit和RhinoMock来测试应用程序。
我在很多文章中都读过一篇介绍公共服务定位器层的文章 ** 我们应该在哪些scnerios中引入公共服务定位器?
我的项目中将与哪个层进行通信?
公共服务定位器层只是一个与业务和前端通信的WCF Web服务项目吗?**
答案 0 :(得分:1)
我认为你指的是一种定位依赖关系(即服务)的常用方法,所以在你的例子中它将取代Unity(或者Unity可能只是实现公共接口)。
通过这种方式,各种框架可以更轻松地协同工作,因为它们共享识别服务/插件等的常用方法。
我们已经有很多实现功能的库(Unity,Ninject等),但是如果一个框架(例如MVC)想要获得某个接口的实例,它需要知道哪个库你正在使用,并且由于它们不共享通用接口,因此这很困难。使用通用接口,您可以告诉MVC您希望从哪里获取它的对象。
答案 1 :(得分:1)
为什么我们需要通用服务定位器 库中?
我们并不真的需要它,它只是提供了更好的分离。它主要是依赖注入顶部的抽象,因此客户端不需要知道服务的位置及其实现方式。
这通常会转到您的客户端代码。例如,创建代理并调用服务的客户端不需要创建代理,它会从服务定位器请求代理。