使用Prism库开发模块化应用程序
将您的应用程序划分为模块
当您以模块化方式开发应用程序时,可以将应用程序构建为单独的客户端模块,并且这些模块可以单独开发、测试和部署。每个模块都将封装应用程序整体功能的一部分。你首先要做出的一个设计决策是如何将应用程序的功能划分为独立的模块。
一个模块应该封装一组相关的关注点,并具有明确的责任范围。一个模块可以表示为一个应用程序的垂直切片或水平服务分层。
围绕垂直切片模块组成的应用程序
围绕水平分层模块组成的应用程序
一个较大的应用程序可能会有基于垂直切片和水平分层的模块组成。一些模块的例子包括:
- 包含特定应用程序功能的模块,如提供新闻和/或公告的模块
- 包含特定子系统或一组相关用例功能的模块,如采购、发票或总账
- 包含基础设施服务的模块,如日志、缓存、授权服务或Web服务
- 包含调用业务线(LOB)系统的服务的模块,如Siebel CRM和SAP,以及其他内部系统
一个模块应该对其他模块有最小的依赖关系。当一个模块依赖于另一个模块时,应该使用在共享库中定义的接口而不是具体类型来实现松耦合,或者通过EventAggregator与其他模块进行通信。
模块化的目标是以即使添加或删除特性和技术也可以保持灵活、可维护和稳定的这样一种方式来划分应用程序。而实现这一点的最佳方法是设计应用程序,使模块尽可能独立、具有明确定义的接口并且尽可能隔离。
确定项目与模块的比例
模块有多种创建和打包的方法,推荐和最常见的方法是为每个模块创建一个程序集。这有助于保持逻辑模块保持隔离并有更好的封装,同时它也更容易将程序集视为模块的边界以及作为您如何部署模块的打包方式。但是一个程序集也不是不能包含多个模块,在某些情况下这可能是首选,它可以将解决方案中的项目数量最小化。对于大型应用程序,拥有10-50个模块并不罕见。将每个模块分离到自己的项目中会增加解决方案的复杂性,并且会降低Visual Studio的性能。如果您选择坚持每个程序集/Visual Studio项目都使用一个模块,那么有时将一个模块或一组模块拆分成为它们自己的解决方案来管理它也是有意义的。