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

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

最佳答案

我都用过,使用CAB编写企业级应用程序,然后使用PRISM(对于winforms,而不是WPF)重新编写它。

PRISM不适用于开箱即用的Winform,您必须破解诸如区域管理器之类的各种东西,但是某些复合 Material 将起作用(例如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的目标之一是允许开发人员编写解耦的软件-但是对框架“ Material ”的依赖性如此之大,以至于整个开发几乎都失败了。我了解您是一名CAB开发人员,而成为CAB开发人员并非易事,因为要花费大量的时间,精力和学习才能成功地使用CAB对应用程序进行编程(我知道,我去过那里!),但是进入PRISM之后,我不会用驳船杆碰到CAB了。

迁移时,我们使用了MVP(MVVM才刚刚发明,所以我们不想走那条路,因为它还未经测试!),并且在很大程度上已经取得了很好的效果。对Winforms使用PRISM意味着我们失去了WPF可以获得的所有不错的数据绑定(bind)-但是我们使用第三方工具为我们处理绑定(bind)(其中有很多-telerik是一个例子,尽管我没有实际使用)。

如果您能够重新编写应用程序,则可能会发现几乎不可能直接移植到PRISM。迁移时,我们的应用程序中有30个表单,并且由于将旧的CAB内容塞入PRISM的工作量很大,因此最终只是重新创建了所有表单。回顾一下-我们真的应该只是硬着头皮,迁移到PRISM的WPF实现,因为我们现在依靠旧的过时技术来填补WPF免费提供给我们的空白(例如数据绑定(bind))。如前所述,我们并不是因为WPF和MVVM都不是太新而且对我们的利益相关者来说风险太大,但是现在它们已经是相当成熟的技术/模式了-我真的认为这是要做的,而不是进行改造您的框架(PRISM)以使用Winforms。

所以-主要区别:
出租车

  • 旧的,不受支持的
  • 非常陡峭的学习曲线,因此很难维护(认为需要使用新的开发人员才能使用)

  • WPF
  • 新增,受支持并正在积极维护/扩展的
  • 那里很多很多的例子-可能很难学习-但是有很多开发人员熟悉该技术并且提供了很多支持
  • WPF特有的-开箱即用的两种方式进行绑定(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/

    10-08 22:46