Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我们需要公共服务定位器库?_C#_Silverlight_Architecture - Fatal编程技术网

C# 为什么我们需要公共服务定位器库?

C# 为什么我们需要公共服务定位器库?,c#,silverlight,architecture,C#,Silverlight,Architecture,我有一个3层的应用程序。前端、业务、数据层。 我使用Microsoft Unity作为依赖项容器。 我已经将NUnit与RhinoMock一起用于测试应用程序 我已经阅读了许多文章介绍了公共服务定位器层。 ** 我们应该在哪个scnerios中引入公共服务定位器 它将在项目中用上述架构替换哪一层 在我的项目中,它将与哪个层通信 公共服务定位层只是一个与业务层和前端层通信的WCF web服务项目吗** 我认为您指的是一种查找依赖项(即服务)的通用方法,因此在您的示例中,它将取代Unity(或者Un

我有一个3层的应用程序。前端、业务、数据层。 我使用Microsoft Unity作为依赖项容器。 我已经将NUnit与RhinoMock一起用于测试应用程序

我已经阅读了许多文章介绍了公共服务定位器层。
** 我们应该在哪个scnerios中引入公共服务定位器

  • 它将在项目中用上述架构替换哪一层
  • 在我的项目中,它将与哪个层通信

  • 公共服务定位层只是一个与业务层和前端层通信的WCF web服务项目吗**


  • 我认为您指的是一种查找依赖项(即服务)的通用方法,因此在您的示例中,它将取代Unity(或者Unity将只实现公共接口)

    通过这种方式,各种框架可以更容易地协同工作,因为它们共享一种识别服务/插件等的通用方法

    我们已经有很多实现该功能的库(Unity、Ninject等),但是如果一个框架(例如MVC)想要获得某个接口的实例,它需要知道您正在使用哪个库,因为它们不共享一个公共接口,这是很困难的。通过一个公共接口,您可以告诉MVC您希望它从何处获取对象

    为什么我们需要公共服务定位器 图书馆

    我们并不真的需要它,它只是提供了一个更好的分离。它主要是依赖注入之上的抽象,这样客户机就不需要知道服务位于何处以及如何实现

    这通常会转到您的客户机代码。例如,创建代理并调用服务的客户端不需要创建代理,而是从服务定位器请求代理