我正在确定一个相当简单的分层架构,用于拥有存储库层和服务层的 .NET MVC 应用程序。我找到了一些相当清晰简单的示例,尤其是在 www.asp.net 和这里的一些问题和答案中,但我正在寻找一些稍微简单的东西,适用于小型应用程序,但使用不同的项目来传达理念。我上面链接的示例将存储库和服务作为 Models 命名空间中的类。这对我来说不够清晰地分离,无法恰当地说明它。
我为实现 IRepository 接口的存储库单独建立了一个项目。服务层也有一个单独的项目,实现 IService 接口并使用 IRepository(构造函数注入)。服务层实现了 IService。对于此示例,仅需要控制器实例化服务,暂时不需要 IoC 容器。把它看作是理解最佳架构实践的中间步骤,这是一个渐进式的序列,包括依赖注入和可能更多的层。
问题是,我应该在哪里定义 IRepository 和 IService?当然,服务和存储库项目都需要引用它们。因此,它们应该在另一个由服务和存储库项目引用的项目中定义。如果是这样,良好的命名约定将是什么?类似于 XXXXContracts?
同样地,传递给表示层、服务层和存储库层之间的数据模型,是否可以有一个名为 XXXXModels 的单独项目被所有层引用?我了解到,某些情况下,在服务和存储库层之间传递的模型可能与在服务层和表示层之间传递的模型不同,但原则相同。
我在这里找到了类似问题的答案,但它们往往涉及比我在这里概述的更复杂的架构。我正在寻求实现两层的真正简单而干净的说明,可以看作是在引用数据层并将业务逻辑放在控制器中之上的一步或两步,仅此而已。我知道有一个强有力且有效的理由可以直接跳转到完全成熟的最佳实践,但并非每个人都适合一步到位。
我为实现 IRepository 接口的存储库单独建立了一个项目。服务层也有一个单独的项目,实现 IService 接口并使用 IRepository(构造函数注入)。服务层实现了 IService。对于此示例,仅需要控制器实例化服务,暂时不需要 IoC 容器。把它看作是理解最佳架构实践的中间步骤,这是一个渐进式的序列,包括依赖注入和可能更多的层。
问题是,我应该在哪里定义 IRepository 和 IService?当然,服务和存储库项目都需要引用它们。因此,它们应该在另一个由服务和存储库项目引用的项目中定义。如果是这样,良好的命名约定将是什么?类似于 XXXXContracts?
同样地,传递给表示层、服务层和存储库层之间的数据模型,是否可以有一个名为 XXXXModels 的单独项目被所有层引用?我了解到,某些情况下,在服务和存储库层之间传递的模型可能与在服务层和表示层之间传递的模型不同,但原则相同。
我在这里找到了类似问题的答案,但它们往往涉及比我在这里概述的更复杂的架构。我正在寻求实现两层的真正简单而干净的说明,可以看作是在引用数据层并将业务逻辑放在控制器中之上的一步或两步,仅此而已。我知道有一个强有力且有效的理由可以直接跳转到完全成熟的最佳实践,但并非每个人都适合一步到位。