首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >存储库和服务层之间的区别?

存储库和服务层之间的区别?
EN

Stack Overflow用户
提问于 2011-02-19 14:51:15
回答 3查看 101.9K关注 0票数 206

在OOP设计模式中,存储库模式和服务层之间的区别是什么?

我正在开发一个ASP.NET MVC3应用程序,并试图理解这些设计模式,但我的大脑就是不懂it...yet!!

EN

回答 3

Stack Overflow用户

发布于 2011-02-19 15:28:25

正如食肉牛龙所说,存储库负责将数据从存储格式映射到业务对象。它应该处理如何从存储读取数据和向存储写入数据(也包括删除和更新)。

另一方面,服务层的目的是将业务逻辑封装到单个位置,以促进代码重用和关注点分离。在构建Asp.net MVC站点的实践中,这通常意味着我有这样的结构。

控制器调用调用存储库的服务

我发现的一个有用的原则是将控制器和存储库中的逻辑保持在最低限度。

在控制器中,这是因为它可以帮助我保持干爽。这是很常见的,我需要在其他地方使用相同的过滤或逻辑,如果我把它放在控制器中,我就不能重用它。

在存储库中,这是因为我希望能够在出现更好的东西时替换我的存储(或ORM)。如果我在存储库中有逻辑,那么当我更改存储库时,我需要重写这个逻辑。如果我的存储库只返回IQueryable,而服务执行过滤,那么我只需要替换映射。

例如,我最近用EF4替换了我的几个Linq- to -Sql存储库,而那些我一直坚持这一原则的存储库可以在几分钟内替换掉。在我有一些逻辑的地方,这只是几个小时的问题。

票数 47
EN

Stack Overflow用户

发布于 2011-02-19 14:59:48

通常,存储库被用作填充实体的脚手架--服务层会发出请求。您很可能会在服务层下放置一个存储库。

票数 8
EN

Stack Overflow用户

发布于 2018-09-30 23:46:17

实现了存储库层来访问数据库,并帮助扩展数据库上的CRUD操作。而服务层由应用程序的业务逻辑组成,并且可以使用存储库层来实现涉及数据库的某些逻辑。在应用程序中,最好有单独的存储库层和服务层。拥有独立的存储库和服务层可以使代码更加模块化,并将数据库与业务逻辑解耦。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5049363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档