我有需要重写的 Winform。我知道我们在 WPF 中有 Prism。对于经历过这两种框架的人来说,这两个框架之间的重要区别是什么?我是一名 CAB 程序员,所以我已经习惯了 CAB 事件连接。
此外,Prism 是否适用于 Winforms? CAB 是否适用于 WPF?
最佳答案
我都用过,使用 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 用于 winforms 意味着我们失去了可以通过 WPF 获得的所有良好数据绑定(bind) - 但我们使用第三方工具为我们处理绑定(bind)(有很多这样的工具 - telerik 是一个例子,虽然不是我的那个)实际使用)。
如果您处于能够重写应用程序的情况 - 您可能会发现几乎不可能直接移植到 PRISM。迁移时,我们的应用程序中有 30 个表单,由于将旧的 CAB 内容硬塞进 PRISM 的工作量很大,我们最终只能重新创建所有表单。回想起来——我们真的应该硬着头皮迁移到 PRISM 的 WPF 实现,因为我们现在依赖旧的过时技术来填补 WPF 可以免费提供给我们的空白(比如数据绑定(bind))。如前所述,我们没有这样做,因为 WPF 和 MVVM 都太新了,对我们的利益相关者来说风险太大,但现在它们已经是相当成熟的技术/模式——我真的认为这是要做的事情,而不是改造您的框架 (PRISM) 以使用 Winforms。
所以 - 主要区别: 出租车
- 旧的,不受支持的
- 非常陡峭的学习曲线,因此难以维护(考虑需要让新的开发人员使用它)
WPF
- 新的、受支持的并正在积极维护/扩展
- 有很多很多示例 - 可能很难学习 - 但有很多熟悉该技术的开发人员和大量可用的支持
- 特定于 WPF - 您可以获得开箱即用的 2 种方式绑定(bind),声明式表单设计(比 winforms 强大得多)
- 特定于 Winforms - PRISM 促进了代码与 UI 的更好分离,因此您的项目变得更易于测试且错误更少。
如果您想直接从马山上获得信息,请阅读:http://compositewpf.codeplex.com/releases/view/16941 - 这是一份将 CAL 与 CAB 进行比较的文档,并详细解释了为弥补 CAB 的缺点所做的工作。
关于c# - CAB 与 Prism 的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21513334/