复杂的表示逻辑与分层应用程序中的域逻辑相同

时间:2013-12-27 09:32:58

标签: c# design-patterns

我在底层编写了复杂域的分层应用程序。在服务器端,有一个复杂的类文档,例如,Price属性。价格由策略模式类计算,如ManualEnteredPrice,DistributedPrice,DiscountedPrice等。 在单元测试中,一切正常,价格计算,文档加载和存储在数据库中等等。 现在我会编写富客户端(winforms)和Web门户(javascript)来处理文档。我将DataTransferObjects用于项目,并通过WCF从客户端的服务层传递数据。在客户端,我从数据传输对象构建了某种视图模型(表单中的绑定和Web中的敲除)。我必须再次写出演示用语的价格计算逻辑。用于策略选择的一些radiobutton,用于数据输入的一些控制以及用于计算显示它的价格的类似价格策略类。然后,当我将DTO传递回服务器时,我不使用计算价格,因为我不相信它的价值。我必须填写文档中的某些字段并再次重新计算价格。 所以,我有两个不同的类层次结构,做同样的事情 - 价格计算。

这是正确的吗?也许有另一种方法?当域和客户端中的逻辑相同时,通常就是这种情况。你如何预测这个架构?

我不能在客户端重用域,因为客户端的类有一些不同的字段或其他字段或行为。

我不能只将价格计算传递给服务层,因为它取决于文档状态,状态,许多其他文档内容。我应该将整个文件的价格重新计算传递给服务,然后在viewmodel中接收和设置价格吗?

如何实现表示逻辑,与域逻辑相同?

1 个答案:

答案 0 :(得分:0)

我认为你有正确的方法。正如您可能理解的那样,做出架构决策需要进行一些权衡。遵循这种特定方法,您将获得许多好处(数据完整性,关注点分离,最小代码依赖性等)。另一方面,你重复了很多逻辑,你认为这可能不是很容易维护。

我会选择遵循您的方法,因为我认为图层之间唯一的依赖关系是逻辑。无法抛弃此逻辑依赖关系。另一方面,遵循您的体系结构已将代码依赖关系最小化,这是任何软件开发体系结构的主要关注点

希望我帮忙!