【发布时间】:2010-12-22 06:13:17
【问题描述】:
我们正在使用 WSSF 构建 WCF Web 服务。这个想法是,它将通过服务公开我们的主数据库,并允许我们在服务之上构建各种应用程序和网站。目前我正在构建一个简单的客户端应用程序,该应用程序将从该服务下载一些数据,对其进行操作,然后将其作为报告 CSV 文件提供给用户。
现在的问题是(操作数据的)业务逻辑应该放在哪里?我想我会把它放在服务中。我已经有一个业务层,其中包含与数据库(客户、订单等)几乎一一对应的简单对象。我想我会制作一些“更高级别”的对象来操作数据。例如,通过使用客户、订单和其他对象并生成报告等。我认为最好的地方是服务的业务层。这样,如果需要,我们可以将这个逻辑重用于各种不同的应用程序。
很遗憾,我的老板不同意。他想要“关注点分离”,并表示此逻辑的正确位置应该是在客户端应用程序内部的业务层中,而不是在服务中。我想这可能更简单,但我想在服务业务层中使用我强大的对象模型来编写这段代码。服务公开的对象不是“真正的”对象,实际上只是轻量级数据结构,没有服务业务层内部存在的完整对象模型的力量。
你们怎么看?
【问题讨论】:
-
问他:如果我们需要另一个客户端,我们应该复制所有的业务逻辑,还是使用一个集中的版本?
-
继续@Rubens Farias 的逻辑,如果需要修复业务逻辑并且它驻留在客户端中,则需要更新所有 个客户端。如果它在服务中,则只需更新服务。
-
感谢您的回复。是的,我也认为可重用性很酷。我想主要的缺点是更新服务可能会破坏所有现有客户端。
标签: c# wcf design-patterns wssf