【发布时间】:2013-11-18 10:13:33
【问题描述】:
我正在为具有存储库层和服务层的 .NET MVC 应用程序确定一个相当简单的分层架构。我找到了一些相当清晰和简单的示例,特别是www.asp.net,以及一些问题和答案,但我正在寻找更简单的东西,适用于小型应用程序,但使用不同的项目,以传达这个想法.我上面链接的示例将存储库和服务作为模型命名空间中的类。这还不足以让我能够正确地说明它。
我有一个单独的项目用于实现接口 IRepository 的存储库。 Service 有一个单独的项目,它实现 IService 并采用 IRepository(构造函数注入)。服务实现 IService。对于这个例子来说,控制器实例化服务就足够了,现在还不需要 IoC 容器。将其视为理解最佳架构实践的中间步骤,是逐步构建以包括依赖注入和可能更多层的序列的一部分。
问题是,我应该在哪里定义 IRepository 和 IService?当然,服务和存储库项目都需要引用它们。很明显,它们应该在服务和存储库项目引用的另一个项目中定义。如果是这样,一个好的命名约定是什么?像 XXXXContracts 这样的东西?
同样,对于在表示层、服务层和存储库层之间传递的数据模型,是否可以接受所有层都引用一个名为 XXXXModels 的单独项目?我知道在某些情况下,服务层和存储层之间传递的模型可能与服务层和表示层之间传递的模型不同,但原理是一样的。
我在这里找到了类似问题的答案,但它们往往涉及比我在这里概述的更复杂的架构。我希望实现两个层的真正简单和清晰的说明,这可以看作是引用数据层并在控制器中具有业务逻辑的一两个步骤,仅此而已。我知道直接采用全面的最佳实践有一个强有力且有效的论据,但并不是每个人都适合一次性实现这一目标。
【问题讨论】:
标签: asp.net-mvc repository-pattern service-layer