【发布时间】:2014-02-26 02:40:11
【问题描述】:
我有需要重写的 Winform。我知道我们在 WPF 中有 Prism。对于那些都经历过的人来说,这两个框架之间的重要区别是什么?我是一名 CAB 程序员,所以我已经习惯了 CAB 事件接线。
另外,Prism 是否适用于 Winforms ? CAB 是否适用于 WPF?
【问题讨论】:
我有需要重写的 Winform。我知道我们在 WPF 中有 Prism。对于那些都经历过的人来说,这两个框架之间的重要区别是什么?我是一名 CAB 程序员,所以我已经习惯了 CAB 事件接线。
另外,Prism 是否适用于 Winforms ? CAB 是否适用于 WPF?
【问题讨论】:
我都使用过,使用 CAB 编写企业级应用程序,然后使用 PRISM(用于 winforms,而不是 WPF)重新编写它。
PRISM 不适用于开箱即用的 winform,您必须破解诸如区域管理器之类的各种东西,但某些复合材料会起作用(例如 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 用于 winforms 意味着我们失去了您可以通过 WPF 获得的所有漂亮数据绑定 - 但我们使用第三方工具为我们处理绑定(有很多这样的 -telerik 是一个例子,虽然不是我的一个实际使用)。
如果您能够重新编写应用程序 - 您可能会发现直接移植到 PRISM 几乎是不可能的。迁移时,我们的应用程序中有 30 个表格,由于将旧 CAB 内容硬塞到 PRISM 中的工作量,我们最终重新创建了所有表格。回想起来 - 我们真的应该咬紧牙关并迁移到 PRISM 的 WPF 实现,因为我们现在依赖旧的过时技术来填补 WPF 免费提供给我们的空白(如数据绑定)。如前所述,我们没有这样做是因为 WPF 和 MVVM 都太新了,对我们的利益相关者来说风险太大,但现在它们是相当成熟的技术/模式——我真的认为这是要做的事情,而不是改造您的框架 (PRISM) 以使用 Winforms。
所以 - 主要区别: 驾驶室
WPF
如果您想直接从马山获得信息 - 请阅读:http://compositewpf.codeplex.com/releases/view/16941 - 这是一份将 CAL 与 CAB 进行比较的文件,并详细解释了如何弥补 CAB 的缺点。
【讨论】:
一篇对比 CAB 和 Prism 的优秀 MSDN 文章
http://msdn.microsoft.com/en-us/library/ff921081%28v=pandp.40%29.aspx
【讨论】: