我下载了Prism v4并运行了安装程序。我进入了目录并运行了以下两个批处理文件:
当我编译这些应用程序时,我没有看到任何真正的区别。我已经搜索了MEF vs Unity,我发现了一些优点/缺点,但没有任何具体说明是否在Prism中使用“更好”(我知道这是主观的)。我想也许如果我列出我的要求,有人可以指出我使用的正确技术(即使它不是Prism 4)。
例如:
基本用户可能有以下选项:
所有相关地址都在Address.dll内。
高级用户可能有以下选项:
所有相关地址都在Address.dll内
管理相关的所有项目都在Admin.dll中。
应用程序实际上不应该引用这些DLL中的任何一个,我打算反映它们,以便如果有100个不同的模块,并且用户只能访问其中的2个,则只下载和使用其中的2个。有权访问其中10个的用户获得10个。
我已经通过WebService解决了下载DLL问题。 :)
答案 0 :(得分:21)
没有“更好”:它们是不同的东西。
IMO您的选择应该仅由您的要求驱动。根据您在此处发布的要求,我建议您使用MEF,因为DLL中包含模块,主应用程序不知道要加载的模块。这些任务是MEF存在的原因。
无论如何你可以使用它们:MEF用于模块化,Unity用于利用依赖注入(可测试性,可重用性......)
答案 1 :(得分:4)
如果所有模块都没有与应用程序同时重新编译,那么MEF为您提供了很多方法来应对主应用程序中不断变化的界面。否则MEF 可能比你需要的更复杂。
答案 2 :(得分:2)
我一直在使用Unity一年的PRISM,但我注意到一些严重的内存泄漏问题。因此我决定给PRISM 4和MEF一个去。我所做的是首先将我的应用程序转换为使用PRISM 4和Unity。然后我转换了一个分支来使用MEF。 这可能听起来很有趣,但MEF似乎处理内存消耗并以某种方式比Unity更好地发布。
很高兴听到其他人是否也有同样的经历?
答案 3 :(得分:2)
关于你的问题,MEF和UNITY是否可以很好地相互协作,我可以告诉你,他们彼此之间的工作非常好。我开发了一个使用PRISM,Unity和MEF的概念验证应用程序。