Common Service Locator library

你在你的应用程序应用IoC容器了吗,你是否希望不依赖于某个具体的IoC,微软的模式与实践团队在Codeplex上发布的Common Service Locator。Common Service Locator 类库包含应用程序和框架开发者引用Service location共享的接口。这个类库提供了在IOC容器和Service locators之上抽象。使用这个类库允许一个应用程序在没有强引用依赖下间接的访问的能力。它所定义的接口非常简单:

namespace Microsoft.Practices.ServiceLocation
{
    public interface IServiceLocator : IServiceProvider
    {
        object GetInstance(Type serviceType);
        object GetInstance(Type serviceType, string key);
        IEnumerable<object> GetAllInstances(Type serviceType);
        TService GetInstance<TService>();
        TService GetInstance<TService>(string key);
        IEnumerable<TService> GetAllInstances<TService>();
    }
}

还提供了一个ServiceLocator静态类作为单一的访问点:

namespace Microsoft.Practices.ServiceLocation
{
    public static class ServiceLocator
    {
        private static ServiceLocatorProvider currentProvider;

        public static IServiceLocator Current
        {
            get { return currentProvider(); }
        }

        public static void SetLocatorProvider(ServiceLocatorProvider newProvider)
        {
            currentProvider = newProvider;
        }
    }
}

这里使用服务器定位器解除IoC同组件之间的依赖关系。服务定位器的最基本的思想就是有一个对象定位器知晓如何控制应用程序需要的所有服务。网站上现在已经有了

常用的IoC的适配器,如果你使用Castle,你可以使用Castle Windsor Adaptor,如果你使用的是Unity,你可以使用Unity Adapter,还有Spring .NET Adapter,

StructureMap Adapter等等.

本文来自合作伙伴“doNET跨平台”,了解相关信息可以关注“opendotnet”微信公众号

时间: 2024-11-05 14:54:19

Common Service Locator library的相关文章

使用Websharp Service Locator简化分布式系统开发

web|分布式 使用Websharp Service Locator 简化分布式系统开发 什么是Websharp Service Locator对于多层的应用系统来说,我们通常把它们划分成客户端.应用服务层和数据库.在应用服务层,我们需要考虑至少两个方面的问题: ü 如何实现业务逻辑 ü 如何向客户端提供服务. 我们可能使用多种技术来实现服务的提供:Webservice..Net Remoting.甚至EJB等.如此多的实现技术,带来的很大的灵活性,但同时也带来了问题,其中一个就是,有多少种服务

Microsoft实现的IOC DI之 Unity 、Service Locator、MEF

这几个工具的站点 Microsoft Unity  http://unity.codeplex.com Service Locator http://commonservicelocator.codeplex.com MEF  .net4.0内含,3.x前在codeplex上开源 Utility The main reasons to use Unity (or any other IoC container) are if: Ø You have dependencies between yo

ASP.NET MVC3 Service Location

介绍 ASP.NET MVC3 的一个重要的新特性就是允许注册一个服务点 Service Location,然后在框架中使用的能力.以前版本的 MVC 已经提供了 Service Location 和依赖注入的机会,在 MVC3 中,我们正式提供了这种能力,并且为开发者开放了多种使用的机会. 总体策略 关于 Service Location 的最重要的部分就是它是可选的,这意味着如果你对 Service Location 不感兴趣,那么,你不需要被强制使用,你总是可以在不使用 Service L

ASP“.NET研究”.NET MVC3 Service Location

介绍 ASP.NET MVC3 的一个重要的新特性就是允许注册一个服务点 Service Location,然后在框架中使用的能力.以前版本的 MVC 已经提供了 Service Location 和依赖注入的机会,在 MVC3 中,我们正式提供了这种能力,并且为开发者开放了多种使用的机会. 总体策略 关于 Service Location 的最重要的部分就是它是可选的,这意味着如果你对 Service Location 不感兴趣,那么,你不需要被强制使用,你总是可以在不使用 Service L

一起谈.NET技术,ASP.NET MVC3 Service Location

介绍 ASP.NET MVC3 的一个重要的新特性就是允许注册一个服务点 Service Location,然后在框架中使用的能力.以前版本的 MVC 已经提供了 Service Location 和依赖注入的机会,在 MVC3 中,我们正式提供了这种能力,并且为开发者开放了多种使用的机会. 总体策略 关于 Service Location 的最重要的部分就是它是可选的,这意味着如果你对 Service Location 不感兴趣,那么,你不需要被强制使用,你总是可以在不使用 Service L

ASP.NET MVC 3 概述

原文地址:http://www.asp.net/mvc/mvc3 导言 ASP.NET MVC3 在 ASP.NET MVC 1 和 2 的基础上,增加了大量的特性,使得代码更加简化,并且可以深度扩展.这篇文章提供包含在此次发布中的许多新特性的说明,分为以下部分: Razor 视图引擎 支持多视图引擎 Controller 改进 JavaScript 和 Ajax Model 验证的改进 依赖注入 Dependency Injection 的改进 其他新特性 Razor 视图引擎 ASP.NET

使用Topshelf创建Windows 服务

Winndows Service 是一种可随 Windows 操作系统启动而启动的,在后台运行的,通常不和用户产生交互的程序.它无法通过双击来运行,类似于 Unix 守护进程(daemon processes),当用户注销时它也不会停止. Windows 服务由三部分组成: 一个服务可执行文件:一个服务控制程序(SCP):服务控制管理器(SCM),负责在 HKLM"SYSTEM"CurrentControlSet"Services 下创建服务键值.用户可通过 SCP 控制服务

.NET中的依赖注入【Dependency Injection】几个参考地址和资源

Autofac http://code.google.com/p/autofac/ Castle Windsor http://www.castleproject.org/ Common Service Locator http://commonservicelocator.codeplex.com/ FxCop http://code.msdn.microsoft.com/codeanalysis MEF Contrib http://mefcontrib.codeplex.com/ MVC

ASP.NET MVC 3 概述“.NET研究”

原文地址:http://www.asp.net/mvc/mvc3 导言 ASP.NET MVC3 在 ASP.NET MVC 1 和 2 的基础上,增加了大量的特性,使得代码更加简化,并且可以深度扩展.这篇文章提供包含在此次发布中的许多新特性的说明,分为以下部分: Razor 视图引擎 支持多视图引擎 Controller 改进 JavaScript 和 Ajax Model 验证的改进 依赖注入 Dependency Injection 的改进 其他新特性 Razor 视图引擎 ASP.NET