在Asp.net mvc中应该有服务层吗?

Ami*_*abh 8 asp.net nhibernate asp.net-mvc domain-driven-design repository-pattern

控制器和存储库之间是否应该在Asp.net MVC中有服务层?由于存储库仅用于数据访问.一些业务逻辑泄漏到Controller中.如果经典Asp.Net客户端使用相同的操作,这可能会产生问题,因为我们必须在Controller中复制逻辑.

Vij*_*tel 10

如果您按照字母驱动设计进行操作,您会发现有3种类型的服务(您不喜欢超载的条款吗?).

  • 域服务:封装不自然地适合域对象的业务逻辑,并且不是典型的CRUD操作 - 那些属于存储库.
  • 应用程序服务:由外部使用者用于与您的系统通信(想想Web服务).如果消费者需要访问CRUD操作,它们将在此处公开(但由适当的存储库处理)
  • 基础设施服务:用于抽象技术问题(例如MSMQ,电子邮件提供商等)

听起来您需要域服务来封装/共享您的业务逻辑.

希望有所帮助!


Aim*_*Kai 2

我强烈建议使用服务层,以便您可以在不同的 Web 应用程序之间共享通用功能。可能的情况是该架构已经存在,并且您可能想在前端添加一个新的 mvc 网站。

对于从头开始构建的简单架构来说,这可能有点过分了。