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干什么呢?