首页 新闻 会员 周边

MVC模式和WebForm模式数据访问的问题

0
悬赏园豆:50 [已解决问题] 解决于 2009-08-07 13:41

 

WebForm模式开发,我们通常用多层框架,比如访问数据库,我们三层代码框架一般是这样:

BLL->IDAL->DAL->数据库

就是BLL调用IDAL接口层,IDAL通过工厂去调用DAL层实现接口,然后DAL层则去访问数据库

 

但是在ASP.NET MVC中,我看了几个开源项目:

1、Oxite(微软开源的,基于MVC开发的CMS系统)

2、NerdDinner (MVC源码)配套电子教程

3、Suteki.Shop

发现他们有几个特点:

特点1、他们都是通过 Controller->IRepository->Repository来调用数据的,有的是 Controller->IServices->Services->IRepository->Repository 的方式调用,只不过在Controller和Repository之间加了Services层。

特点2、他们把读取数据的和数据实体层都放在Models中,或和Models放一起

特点3、三个项目全用的Linq to SQL,而不是用ADO.NET

 

我的问题是:

1、“BLL->IDAL->DAL->数据库” 和 “Controller->IServices->Services->IRepository->Repository->数据库” 官方是不是推荐在MVC中使用后者?

2、如果使用后者是在MVC中被推荐的,这两种方式的区别在哪?因为我觉得IServices和IRepository接口中定义的接口方法几乎是一样的,那干嘛还要多搞一层,加个IServices干什么呢?

请牛人们指点小弟,在此,先谢!

Lixy的主页 Lixy | 初学一级 | 园豆:39
提问于:2009-08-07 08:13
< >
分享
最佳答案
1

Controller其实还是属于UI层,Service负责业务逻辑的处理,与BLL对应,Repository负责数据库访问,与DAL对应。
你在使用“BLL->IDAL->DAL->数据库”这种方式时,BLL中定义的接口方法不也是和DAL中定义的接口方法是一样的吗?这里为什么多出一层呢?
BLL也好Service也好,其实都是对业务逻辑的封装,在简单业务逻辑中,可能就起到一个方法传递的作用。但是在处理复杂逻辑时,他们的职责就可以得到更好的体现了。
对于问题一,官方应该没有明确的推荐,只是目前社区比较倾向于在数据库访问时使用Repository模式,而处于SOA的考虑,业务逻辑往往使用Service来命名。
以上是个人理解。

收获园豆:15
麒麟.NET | 老鸟四级 |园豆:3614 | 2009-08-07 12:34
回答得好
远哥 | 园豆:222 (菜鸟二级) | 2010-05-08 18:08
其他回答(4)
-1

体系架构

企业型
MVC->BLL->IDAL->DAL->数据库
WebForm->BLL->IDAL->DAL->数据库
WinForm->BLL->IDAL->DAL->数据库
控制台->BLL->IDAL->DAL->数据库

服务型
MVC->IServices->Services->IRepository->Repository-> LinQ->数据库
WebForm->IServices->Services->IRepository->Repository-> LinQ->数据库
WinForm->IServices->Services->IRepository->Repository-> LinQ->数据库
控制台->IServices->Services->IRepository->Repository-> LinQ->数据库


这样应该明白吧
mvc是asp.net的ui开发框架,于之对立的是WebForm

收获园豆:15
远哥 | 园豆:222 (菜鸟二级) | 2009-08-07 09:13
0

在系统设计中,层与层之间一般不采用直接提供服务的形式,而是抽象出接口层提供服务。Controller->IServices->Services,Services抽象出IServices层,Services->IRepository->Repository,Repository抽象出IRepository层,这样做的好处是减少层与层之间的耦合性,也就是高内聚,低耦合。

本人觉得大型系统不合适采用MVC类似的架构去做,因为大型系统涉及到的table list会很多,如果用你所说的Controller->IServices->Services->IRepository->Repository->数据库,给人的感觉有点过度设计了,会给系统以后的维护带来很多困难

收获园豆:10
vincent shi | 园豆:220 (菜鸟二级) | 2009-08-07 09:36
0

怎么使用方便就怎么用呗, 什么模式框架主要就是用来加快开发效率

收获园豆:5
peterzb | 园豆:861 (小虾三级) | 2009-08-07 09:55
0

凭经验想怎么用怎么用,他们给的只是参考。

收获园豆:5
小军人 | 园豆:236 (菜鸟二级) | 2009-08-07 10:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册