首页 新闻 会员 周边 捐助

关于Asp.Net MVC分层的问题

0
悬赏园豆:30 [已解决问题] 解决于 2015-04-20 16:48

最近在做一个进销存项目,采用Asp.Net MVC+EF+jQuery(EasyUI)+Sql2008,以下是项目截图

C和V就不说了,M里放的是实体和EF数据库访问类(jinbudb.cs),一些业务逻辑基本是放在Controller下,请教下一些中大型系统应该怎么做架构设计?

勇哥哥的主页 勇哥哥 | 菜鸟二级 | 园豆:206
提问于:2014-11-22 08:01
< >
分享
最佳答案
0

可以参考一下Orchard,不过这样你的项目肯定来不及完工了。

收获园豆:15
爱编程的大叔 | 高人七级 |园豆:30844 | 2014-11-22 08:20
其他回答(7)
0

直接把业务层抽取一下就行了,分层太多,累。

收获园豆:3
幻天芒 | 园豆:37207 (高人七级) | 2014-11-22 08:33

直接将Controller里的代码抽取出来放一层这个方法我也想过,但是我觉得这个意义不大,谢谢兄弟!

 

 

 

支持(0) 反对(0) 勇哥哥 | 园豆:206 (菜鸟二级) | 2014-11-22 08:45

@勇哥哥: 后端基本是不会变化的,唯一多变的就是前台显示,所以抽取一下业务层是有点必要的。这样也能防止Controller太臃肿。

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2014-11-22 08:50

@幻天芒: 有点道理,谢谢兄弟了!

支持(0) 反对(0) 勇哥哥 | 园豆:206 (菜鸟二级) | 2014-11-22 09:18

@幻天芒: 请教下抽取的业务层是放在Models层下建文件夹组织数据还是另外建个项目做BLL业务层,怎样组织数据比较科学合理点?谢了

支持(0) 反对(0) 勇哥哥 | 园豆:206 (菜鸟二级) | 2014-11-22 09:29

@勇哥哥: 直接建个项目,放就行了。我一般都让bll和数据层耦合,哈哈。大中型项目另说。

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2014-11-22 11:40

@幻天芒: 你那不叫耦合,只是少了个中间接口层而已。一般来说,不做DB的泛化,这样说的过去。

支持(0) 反对(0) 上帝之城 | 园豆:2549 (老鸟四级) | 2014-11-24 13:39

@上帝之城: 好吧~这样说也没错。具体分层还需要根据项目本身来定。

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2014-11-24 13:40
0

三层结合mvc会好很多啊,就算不用三层业务逻辑也好是抽取出来的好

收获园豆:3
约个十月天 | 园豆:411 (菜鸟二级) | 2014-11-28 13:30
0

直接抽取业务比较好吧。感觉

收获园豆:2
我是糖糖 | 园豆:446 (菜鸟二级) | 2014-11-30 14:26
0

数据库操作封装的的写成一层吧,视图用的Model用数据库生成的表实体映射。这样合理一点儿吧。

收获园豆:3
tianya22110 | 园豆:228 (菜鸟二级) | 2014-12-19 15:57
0

Asp.net. Mvc的 model实际上不包含业务逻辑和数据访问哈 只是视图模型。 所以你的数据访问和业务逻辑不要 放里边的好 

收获园豆:2
mushishi | 园豆:430 (菜鸟二级) | 2015-01-18 13:38
0

楼主的分层完全可以,但是,这仅仅是对UI层功能权限的分层。

你至少还需要DAL,BLL 2层,

如果可能有多个数据库你可以搞个DB层,

你还可以搞些公共的仓储 Repository

如果你的项目访问人数比较多,需要用到分布式,那你还需要一层

既然用到了开源框架MVC,那么肯定有对于MVC的一些扩展类,这些你也可以搞个类库放一层

总之,怎么方便怎么使用。

 

楼上有几位兄弟可能对框架认识太浅,框架绝对不会是开发项目的累赘,在框架上浪费的时间可能多点,但是对于整体项目开发确实大力节省时间的,并且层次感更强。

收获园豆:1
kezhiping | 园豆:197 (初学一级) | 2015-02-05 13:15
0

(1)分层设计主要层的内容和层间交互,不一定非要在多个项目中,一个项目多个文件夹也可以。

(2)至少要把核心逻辑独立出来。

(3)你可以参考nopcommerce的,然后把它的项目转换为你项目里的文件夹。

good luck。

收获园豆:1
秋天不会来 | 园豆:320 (菜鸟二级) | 2015-03-17 11:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册