两年前我和Unity合作过,我打算再次使用它。
但是,当你谷歌搜索它时,你会进入微软网站,该网站说不再维护这些网页,而另一个重点是codeplex.com。
然而,在codeplex,自2010年开始以来一直没有发布,并且他们在may / 6月承诺电影(我认为它们意味着2010年),但他们还没有。
所以我想知道这个产品还活着,还是MEF那个新的孩子那个岩石?
ps(bit offtopic)
不知道我是否是唯一一个,但我似乎永远不会很好地了解一个代码复合项目的成熟度/状态/“它们将在明年存在”等,以及大部分时间的文档是马马虎虎的
答案 0 :(得分:6)
几点:
MEF,并非旨在成为Unity的竞争产品(因此,在选择IoC的主要用途时请记住这一点)。 Microsoft员工Glenn Block在stackoverflow上提出了here:
我们的目标不是让MEF成为一名学生 通用IoC。最好的思考方式 关于MEF的IoC方面是一个 实施细节。我们使用IoC作为 模式,因为它是一个很好的方式 解决我们正在寻找的问题 解决...... MEF专注于可扩展性。
P&P forum for Unity 上也有类似问题(上个月),答案如下:
Unity活得很好而且有一个 现在正在努力的团队(我们是 构建Unity拦截支持 作为Silverlight的一部分 Silverlight集成包)。校验 你会看到最新一滴 在那里更新。
此外,还有很多项目在使用 Unity今天,包括微软 产品。 Unity采用的脉搏 非常健康 - 下载量超过10万 Unity 2.0独立版等等 通过EntLib。订阅者数量 到stackoverflow上的Unity论坛是 与MEF论坛相同。
我强烈建议您在薄包装后面抽象出您选择的IoC容器,以帮助您免受任何特定容器过时的风险。如果需要,它将更容易切换到不同的容器。 Brownfield Application Development in .NET的第251页也提倡这种方法,示例代码如下(为了避免侵犯版权,我稍微改了一下):
public class Resolve { public static T TypeOf<T>() { //… } } public class SomeClass { public void DoingSomething( ) { var someDependency = Resolve.TypeOf<ISomeDependency>(); //... } }
答案 1 :(得分:5)
MEF(Managed Extensibility Framework)和Unity目前在微软的依赖注入产品方面处于竞争的地位。就截取和AOP(面向方面编程)而言,MEF还没有真正努力解决这个问题。
历史告诉我们,微软并没有真正管理其竞争/重叠的团队项目,结果是一半的烘焙实施记录往往缺乏基本功能(看看LINQ to SQL和Entity Framework明显例如 - 3年后,EF仍然缺乏LINQ to SQL开箱即用的非常基本的功能。)
我个人会选择一个更成熟,维护更好的DI框架(大部分都有比MEF和Unity组合更多的功能)。我喜欢Castle Windsor。 NInject,StructureMap和其他人似乎也有良好的跟踪记录。
答案 2 :(得分:3)
我认为MEF是新的孩子。它非常甜蜜。它似乎有很好的记录,看起来它会存在一段时间。从我所看到的,它也比Unity更容易。
答案 3 :(得分:1)
是的,Unity确实存在!我也是如此。如果我没有弄错的话,微软模式和实践与团结2.0相同?