Gup*_*R4c 21 c# design-patterns repository-pattern
如何Services和Repositories在DDD的相互关系?我的意思是,在过去的两天里,我一直在阅读DDD,无论我走到哪里,总会有Service一层,而且总有Repository一层.这些如何区分或互相恭维?
从我所读到的,不是Repository负责委托应用程序和数据之间的交互的层?
那么,Service如果层必须实现Repository与数据交互,那么对层的需求是什么,即使Repository可能已经实现了所需的方法?
我很欣赏这个主题的一些启示.
PS不知道这是否有用,但我正在使用ASP.NET MVC 2应用程序,我正在尝试实现Repository模式.我刚刚完成了依赖注入模式的实现(有史以来第一次)......
UPDATE
好的,有这么多答案,我想我明白了它的不同之处.所以,审查(纠正我,如果我错了):
阿Repository层只与单个对象从数据库或ORM的相互作用,IEmployeeRepository- > Employee.
阿Service层封装上从返回的对象更复杂的功能Repositories,无论是一个或多个.
那么,我有一个子问题.创建要发送到我的视图的抽象对象被认为是不好的做法吗?例如一个AEmployee(A对于abstract因为对我来说I意味着interface),其含有从性能Employee和X或X?
实际上,还有一个问题.如果一个Service层可以被认为是"调整"的应用程序,它是否需要通过接口实现?
boj*_*boj 18
确实,存储库使用数据(即SQL,Web服务等),但这是唯一的工作.CRUD操作,仅此而已.基于存储过程的业务逻辑没有地方.
服务(或业务逻辑层)提供功能.如何以fullfill业务请求(即计算工资),什么你必须做的.
哦,这是一本非常好的DDD书:http: //www.infoq.com/minibooks/domain-driven-design-quickly
Tod*_*ith 10
作为具体示例,购物车应用程序可能具有以下服务:
ShoppingCartService - 管理一系列带有添加/删除/更新支持等的项目.
OrderService - 购物车,将其转换为订单并处理付款流程等.
这些服务中的每一个都需要为CRUD操作谈论"数据源".这就是Repository模式派上用场的地方,因为它抽象了数据的加载和保存,数据来源是数据库,Web服务甚至是内存缓存.
当您想要创建应用程序的快速原型而无需处理数据库设置,架构,存储过程,权限等时,您可以在几分钟内创建缓存或虚拟存储库.
对于上面的示例,您的原型可能会从以下开始:
一旦您的原型准备好进入下一个级别,您就可以针对真实数据库实现这些:
根据我的记忆,存储库是数据之前的最终类.服务类可以对从存储库检索的数据执行操作.存储库实际上只是为了将数据提供给其他人来完成工作.服务层可以提供所有数据必须通过的业务逻辑等内容.它还可以提供应用程序逻辑和数据层之间的转换.但同样,这正是我记得的.