CAB与棱镜的比较

Jes*_*aya 5 c# wpf prism cab winforms

我有需要重写的Winform.我知道我们在WPF中有Prism.对于那些经历过两者的人来说,这两个框架之间的重要区别是什么?我是CAB程序员,所以我已经习惯了CAB事件接线.

此外,Prism是否适用于Winforms?CAB是否适用于WPF?

Jay*_*Jay 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

  1. 旧的,不支持的
  2. 非常陡峭的学习曲线,因此难以维护(想想需要让新的Dev用于它)

WPF

  1. 新的,支持的和积极维护/扩展
  2. 那里有很多很多例子 - 可能很难学 - 但是有很多开发人员熟悉这项技术并提供如此多的支持
  3. 特定于WPF - 您可以获得开箱即用的双向绑定,声明式表单设计(远比winforms强大)
  4. 特定于Winforms - PRISM促进了代码与UI之间的更好分离,因此您的项目变得更易于测试并减少错误.

如果你想直接来自马厩的信息 - 请阅读:http://compositewpf.codeplex.com/releases/view/16941 - 这是一份比较CAL和CAB的文件,并详细解释了为弥补这些缺点所采取的措施.出租车.