我有需要重写的Winform。我知道我们在WPF中有Prism。对于那些经历过两者的人来说,这两个框架之间的重要区别是什么?我是CAB程序员,所以我已经习惯了CAB事件布线。
此外,Prism适用于Winforms吗? CAB是否适用于WPF?
答案 0 :(得分:5)
我使用过这两种方法,使用CAB编写企业级应用程序,然后使用PRISM重写它(对于winforms,而不是WPF)。
PRISM不适用于winforms开箱即用,你必须破解各种各样的东西,如区域经理,但一些复合的东西将起作用(如Unity或事件聚合)。它确实需要花费很多工作,(所有PRISM源代码都是免费提供的),但也有一些开发人员撰写了关于如何开始的博客。 一些例子: http://briannoyesblogwp.azurewebsites.net/2008/10/13/composite-extensions-for-windows-forms/ http://blogs.msdn.com/b/gblock/archive/2008/10/20/bringing-prism-to-winforms.aspx
CAB是否适用于WPF ...为什么要尝试查找? CAB非常陈旧,很难学习,因为做简单的事情是如此令人费解(学习曲线非常重要)并且内存使用率非常高。 CAB的目标之一是允许开发人员编写解耦软件 - 但是对框架“东西”的依赖程度如此之多,以至于它几乎全面失败。我知道你是一名CAB开发人员,作为一名CAB开发人员,这是一项不小的成就,因为它需要花费大量的时间,精力和学习才能成功地使用CAB编写应用程序(我知道,我去过那里!),但是转到PRISM,我不会用驳船接触CAB。
当我们迁移时,我们使用了MVP(MVVM刚刚被发明,所以我们不想走这条路,因为它太未经测试了!),并且在很大程度上它已经很好地发挥了作用。使用PRISM for winforms意味着我们失去了你可以用WPF获得的所有好的数据绑定 - 但是我们使用第三方工具来处理我们的绑定(有很多这些 - telerik是一个例子,虽然不是我的实际使用)。
如果您处于可以重写应用程序的情况 - 您可能会发现几乎不可能直接移植到PRISM。在迁移时我们的应用程序中有30个表单,并且由于我们将旧的CAB内容套入PRISM的工作量,我们最终重新创建了它。回想起来 - 我们真的应该咬紧牙关并迁移到PRISM的WPF实现,因为我们现在依赖于旧的过时技术来填补WPF给我们免费提供的空白(如数据绑定)。如前所述,我们之所以没有,因为WPF和MVVM对于我们的利益相关者来说都是新的和过多的风险,但现在他们已经是非常成熟的技术/模式 - 我真的认为这是要做的事情,而不是改造你的框架(PRISM)使用Winforms。
所以 - 主要区别: CAB
WPF
如果你想直接来自马厩的信息 - 请阅读:http://compositewpf.codeplex.com/releases/view/16941 - 这是一份比较CAL与CAB的文件,并详细解释了如何解决CAB的缺点。
答案 1 :(得分:0)
与CAB和Prism对比的优秀MSDN文章
http://msdn.microsoft.com/en-us/library/ff921081%28v=pandp.40%29.aspx