棱镜模块化实践

时间:2011-11-24 09:13:02

标签: prism modularity

我正在研究Prism并需要创建一个小型演示应用程序。我有一些设计问题。态度之间的差异可能很小,但我需要稍后将这些实践应用到大型项目中,所以我正在努力思考。

  1. 假设经典数据库相关场景 - 我需要获取员工列表,双击列表项可获得该员工的额外信息:数据访问项目应该是模块,还是项目访问通过存储库模式更好的解决方案那么大型项目,当数据库不止一个表,并提供有关员工,销售,公司等的信息时呢?

  2. 我目前正在考虑将DataAccess模块用作独立模块,并在Infrastructure项目中定义了其接口及其返回类型(EmployeeInformation)。这意味着我的DataAccess模块和我的应用程序都必须引用Infrastructure项目。这是一个好方法吗?

  3. 我正在使用我的应用程序中的DataAccessServiceLocator)访问所述MEF模块。是应该由应用程序的某些部分访问ServiceLocator,还是仅仅用于初始化部分?
  4. 感谢。

1 个答案:

答案 0 :(得分:1)

  1. 当一个模块包含可以独立存在的应用程序的一部分时,它是有必要的。这可以是只有几个人需要或被允许使用的应用程序的一部分,例如,用户管理模块只允许管理员访问。但是,您的数据访问层并不是通常进入模块的那种孤立功能。它最好放在真实模块可以使用的通用程序集中。这里的问题是所有模块都依赖于这个DAL程序集,因此在设计应用程序时要考虑更新DAL(向下兼容性)。
  2. 通常,广泛使用的类型驻留在公共程序集中没有问题。但这不是基础设施组装。正如文字所暗示的,基础设施提供了使模块协同工作的服务。您的常见类型应该类似于YourNamespace.Types或YourNamespace.Client.Base或......
  3. 这是许多论点中的一个主题,但仍不清楚(至少从我的观点来看)。依赖注入的纯粹主义者说它应该只在初始化期间使用。实用主义者正在他们的应用程序中使用ServiceLocator。