2011-11-24 159 views
1

我正在学习棱镜并需要创建一个小型演示应用程序。我有一些设计问题。态度之间的差异可能很小,但我需要将这些实践应用到大型项目中,因此我试图提前思考。棱镜模块化实践

  1. 假设经典DB相关情景 - 我需要得到员工的列表,并在列表项双击获取用于员工额外的信息:如果该数据访问项目是一个模块,或者是一个项目通过存储库模式访问更好的解决方案大型项目的情况如何,当数据库不止一张表,并提供有关员工,销售额,公司等的信息时呢?

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

  3. 我正在使用我的应用程序中的ServiceLocatorMEF)访问上述DataAccess模块。 ServiceLocator是否应该被应用程序的某些部分访问,还是仅用于初始化部分?

谢谢。

+0

我创建了与基础架构分开的数据访问,现在将它们合并为一个项目。当你开始深入研究时,有很多共同的部分。 – katit

+0

我也这么认为,但在主应用程序中,我们希望在Prism上构建一个,DataAccess将是一个相当大的项目,我认为它会溢出“Infrastructure”项目。 – Noich

回答

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