我有以下设计:我的设计
我的设计 http://s15.postimg.org/3zha8rzqh/Design_Idea.png
我的课程中将有一个名为“ProductDTO”的课程服务层(左侧服务)。
当调用“更新产品(ProductDTO)”操作合约时 - 它应该调用业务逻辑层.
在数据库中(“数据访问层”)有一个名为“Product”的实体,并且因为我使用 LINQ-To-Entities,所以我还将有一个名为“Product”的类。
我的问题是 - 在哪里将 'ProductDTO' 翻译为 'Product' ?
我应该有一个“Translate_ProductDTO_To_Product”函数吗?服务层?
这似乎是最合乎逻辑的答案,因为这是唯一知道“ProductDTO”是什么的层。
但这意味着服务层还必须知道“产品”是什么,因此必须引用数据访问层组件。
它是否正确 ?
我以为服务层应该只参考业务逻辑层,并且业务逻辑层应该只参考数据访问层,并且服务层应该对 DAL 一无所知。
看来您的困惑可能源于假设Product
数据层中的类实际上是Product
实体。一般在域驱动程序设计,您的业务实体位于/是业务逻辑层。通常这些类“不知道”持久性,这是数据访问层的责任(通常使用对象关系映射器框架)。
在实践中,您的服务将需要引用域模型(业务层)和数据访问层来执行有用的工作。 WCF 服务代码和数据访问层都应依赖于域模型,但域模型不应依赖于数据访问层或 WCF 服务代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)