公共服务定位器库的通用绑定

时间:2012-10-28 14:53:22

标签: binding inversion-of-control unity-container ioc-container structuremap

Common Service Locator Library是一个好主意,但它让我问“我们还可以使绑定更通用吗?”

当然,具体实现(例如结构图,Unity等)之间的差异使得不可能具有完全共同的绑定概念。但应该可以实现80/20 rule。是?

换句话说,为什么没有一个简单的通用绑定集来覆盖大多数绑定场景?也许最简单的常见绑定只需要一个元组:

requested type, bound type, life-time-management-enum

之前有人这样做过吗?

1 个答案:

答案 0 :(得分:0)

  

公共服务定位器库是一个好主意

CSL仅仅是框架开发人员的抽象,因为非框架应用程序在应用依赖注入模式方面要好得多,这使我们能够完全消除对服务定位器的需求。

  

为什么不拥有一个涵盖大多数绑定的简单通用绑定集   方案

定义自己的自定义抽象是非常“容易”的。然而问题在于这个80/20。由于每个容器的差异(以及魔鬼在细节中),这种抽象只适用于最琐碎的应用程序。对于其他所有内容,您将不得不直接与容器进行交互,这使得抽象变得毫无用处。

但是这一切都假设从容器切换的问题是重写基本的“请求类型,绑定类型,生命周期管理枚举”语句,但这是一个错误的假设。更改这些行可以在几分钟内完成(因为您的所有注册代码都在一个地方)。然而,从一个容器切换到另一个容器的困难是支持的差异,例如批量注册,装饰器注册,拦截,生命周期范围,寄存器解析 - 释放等,以及应用程序对特定框架功能的依赖性