OO应用层设计问题

时间:2010-01-19 15:04:16

标签: .net

假设控制器类与应用程序服务层中的服务类相同是否正确。 例如 CustomerService与CustomerController

相同

3 个答案:

答案 0 :(得分:3)

这取决于您如何定义服务层,但一般来说答案是否定的,它们并不相同。我使用自定义MVC框架,Service类与Controller类分开。

Controller类负责制定应用程序逻辑决策。他们决定应用程序的操作应该是什么,例如加载哪些对象以及运行什么逻辑。数据更改等业务逻辑不应由Controller类处理。它们用于做出决策。在您的情况下,CustomerController可能会决定要加载哪个Customer对象以及要对其执行的操作。

服务类通常负责协调业务类之间的交互。通常这是某种数据操作或交易的形式。作为一个例子,CustomerService类可能为您的Customer对象提供方法,以便将购买内容保存到数据库或激活中央存储库上的RPC调用。

答案 1 :(得分:2)

不,Controller一词通常用于表示一个类,该类负责控制某些下游(更接近UI)代码组件的行为或访问模式,如UI屏幕本身,或某些下游组件与上游组件,包含(或模型化)该下游组件使用的数据。

服务组件是一个组件,它提供某些功能或实现应用程序业务逻辑所需的进程(或在某些情况下由基础结构要求甚至应用程序设计要求),这些进程可以封装在单个类中以进行隔离来自其他应用程序功能。

答案 2 :(得分:2)

不,请参阅model-view-controller。控制器应该调用服务层来完成它的工作,填充模型等等。但是它们不应该是同一个东西,

  • 模型代表数据
  • 视图呈现数据
  • 控制器协调一切,并可以使用 服务层。

控制器不应包含业务逻辑。