[Prism]Composite Application Guidance for WPF(1)--概览

 

[Prism]Composite Application Guidance for WPF(1)--概览

                           周银辉

什么是
Composite Application Guidance for WPF
(以下简称Prism

我们想象一下,在复杂的企业级开发中,我们的开发规模非常的大,以至于我们需要将其分解成多个小的模块,以便分发给不同的人,甚至是在不同地方的团队分别进行开发和测试,最后我们在将这些相对独立的模块集成起来形成一个完整的应用。所以我们需要找到一种方法来帮助我们划分和组织这些模块,以使他们相对独立(低耦合),当然,我们也需要找到一种较好的方式让模块之间进行通讯。

这个问题最早被CAB所关注(如果你不了解CAB/SCSF,可以参考这里这里,如果你不了解Composite Application,可以参考这里),但稍稍了解一下CAB,我们会发现事实上其是为Windows Forms开发所设计的,不能很好地支持WPF。可能有人会说其能找到某些方法让WPFCAB框架中运行得不错,的确,这我很了解,因为我现在手头的项目便是这么干的。但我要说的是,将拖拉机改造成跑车也许也能Work,但它毕竟还是拖拉机,其优势在于收割小麦而不是载着你去参加聚会。

于是,从今年年初开始,P&P 小组就开始为WPF寻找一种Composite Application方案,其类似于CAB(但不是CABfor WPF版本),于是便有了我们这里要讨论的Composite Application Guidance for WPF (Prism

CAB的区别

其实,刚开始接触到Prism的时候,我也以为其是CABWPF版本,但后来发现:不是。其是为了WPF实现Composite Application而全新打造的Composite UI FrameworkPrism官方文档中是这样说的:(英文原文在这里,我为大家简单翻译一下,别见笑,我的英文不好,嘿嘿):

这并不是CAB的一个新版本,而是一个全新的从头开始打造的开发库和开发指南,目的在于帮助你开发新的WPF Composite application,虽然说其不是CAB的新版本,但,其借用的CAB的一些核心概念,比如ModularityUI CompositionServicesDependency injection(依赖注入),以及Event brokering等,这样概念是打造Composite ApplicationPrism所必需的。之所以要这样做(打造一个全新的框架)是由于以下几个原因:

l   Prism汇集了大量用户反馈:这些年来,P&P Team收到了很多很好的关于CAB的反馈,有积极的也有消极的。很多反馈说其太重量级,太复杂,太紧耦合,并且很难搞定。并且customers expressed a need for an approach that allows incremental adoption of the library and to work with existing libraries. The patterns & practices team determined that the best way to address the concerns and tackle the new ideas was with a clean break.

CAB并不支持WPF。尽管你可以找到一些方法来上WPFCABWork,但,CAB并不是建立在发挥WPF核心优势基础之上的。事实上在很多情形下,CAB引入的许多机制恰恰原产于WPF,比如说WPF是一attached property来实现UI Composition就是比目前CAB中的一下方式更轻量级些。另外,WPF天生就是与Windows Forms不同的模式,其比起传统的使用控件的方式而言有着更多更灵活的方式来组合你的UIWPF也引入了一些诸如模板(Template)的方式来控制你的界面绘制。

CAB依赖于Windows Forms 开发经验,而WPF的开发却有着不通的模式(关于WPF开发模式的内容就不翻译了哈,可以参考我的这篇文章

 

我该何去何从:

很简单,可以参考下面的建议:

如果你需要开发一个Composite Windows Forms Application,那么可以考虑CAB/SCSF

如果你需要开发一个Composite Windows Forms Application,但又想在上面使用一些WPF内容,那么可以考虑CAB/SCSF WPF interop

如果你需要迁移一个已存在的Composite Windows Forms ApplicationWPF,可以考虑CABSCSFSmart Client Contrib(这可以创建WPFView

如果你想开发一个Composite WPF Application或者将一个已存在的WPF项目升级到Composite WPF Application,那么你可以考虑使用本文所介绍的Composite Application Guidance for WPF

Prism环境与资源下载

posted @   周银辉  阅读(10157)  评论(7编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示