如何让MVC和多层架构和谐并存(一)
MVC的架构和多层架构,在ORM框架上是不兼容的。MVC的数据库操作需要通过实体框架Entity Framework,多层的数据库操作需要通过DAL层。我们最近刚完成的项目,实现了MVC和多层的并存,有一些心得,记述一下。
为什么硬要把MVC和多层捆在一起用?有三个原因,首先,新的项目是一个站长工具网站(www.youhuafenxi.com),里面很多查询算法,我们在BLL层里都有积累,可以直接拿来用;其次,MVC的优雅和干净,特别适合我们这个网站;最后,新技术的探索和使用永无止境,不学习就会落后。
整体项目如下:
经过考虑,我决定数据操作走多层,放弃Entity Framework。原因在于:1 团队成员很少接触Entity Framework,本来Mvc已经是新东西了,再引入Entity Framework,这次项目中的新东西有点太多,风险过高。我一向觉得一个项目中新东西比例不宜超过30%;2 据我用过的朋友说,Entity Framework性能不太好,当然这个有待实际核实;3 BLL是个公用层,我们写在BLL层里的代码将来还可以被别的项目复用,而Entity Framework写的代码一般只能被本项目使用。
MVC架构,数据实体是Models这个目录:
多层的数据实体是Model层:
这两种Model有什么差别呢?多层的Model,是完全和数据库字段一一对应的,很简单,都是属性。MVC的Model,是和View业务逻辑对应的。这个业务逻辑可能和数据库有关联,也可能没有关联,甚至可能和多个数据表有关联,有可能很复杂,比如带List列表。但是,基本的业务逻辑,View的表单元素还是可以和数据表一一对应的。这样,只要把Mvc的Model和多层的Model有相关性的按照相同表字段建立关联,就可以使用到多层的数据操作。
(未完待续)
如何让MVC和多层架构和谐并存(一)的更多相关文章
- 如何让MVC和多层架构和谐并存(二)
上一节说了一些笼统的东西,这节说一些实际的操作. 1.取列表.这是一个新闻列表: 对应MVC的model是: public class NewsListModel { /// < ...
- 转载Mvc的多层架构
Mvc的多层架构 分享一个Mvc的多层架构,欢迎大家拍砖斧正 多层架构是什么? 多层架构是开发人员在开发过程当中面对复杂且易变的需求采取的一种以隔离控制为主的应对策略,关于多层架构的标准,我认为有 ...
- Mvc的多层架构
分享一个Mvc的多层架构,欢迎大家拍砖斧正 多层架构是什么? 多层架构是开发人员在开发过程当中面对复杂且易变的需求采取的一种以隔离控制为主的应对策略,关于多层架构的标准,我认为有一句话是比较有代表 ...
- 分享一个MVC的多层架构,欢迎大家拍砖斧正
如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 多层架构是开发人员在开发过程当中面对复杂且易变的需求采取的一种以隔离控制为主的应对策 ...
- 多层架构+MVC+EF+AUTOFAC+AUTOMAPPER
最近使用ligerui搭建了一个简单的教务管理demo,将重要的地方记录,也希望能帮到有这方面需要园友. 一.目录 1.多层架构+MVC+EF+AUTOFAC+AUTOMAPPER: 2.MVC中验证 ...
- MVC 5 Scaffolding多层架构代码生成向导开源项目
asp.net MVC 5 Scaffolding多层架构代码生成向导开源项目(邀请你的参与) Visual Studio.net 2013 asp.net MVC 5 Scaffolding代码 ...
- 【转】浅谈MVC与三层架构
首先给大家引入下MVC的概念: MVC(Model View Controller)模型.视图以及控制器,它是一种较为广泛应用的结构设计模式. 模型:就是在MVC设计模式中需要被显示的数据.在通常情况 ...
- .NET跨平台之mac 下vs code 多层架构编程
合肥程序员群:49313181. 合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入,申请备注填写姓名+技术+工作年限) Q Q:408365330 E-Mail:eg ...
- MVC与三层架构的区别
我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真相. 首先,它俩根本不是一个概念. 三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目. ...
随机推荐
- 我的web安全工程师学习之路——规划篇
据网上收集的web安全工程师需要掌握哪些技能,职位要求以及如何入门,加上学习网易推出的web安全工程师微专业课程,为了进一步学习,所以给自己做了一些小小规划,也希望给同样想成为web安全工程师的同仁们 ...
- 利用Android studio开发Java工程
1. 新建项目 新建项目肯定是去new,但到底是new project还是new module是一个问题.在这解释一下,如果new project的话是新建一个工程,相当于新建一个工作区,工程中可以有 ...
- adminLte 解决菜单栏 bug
<ul class="sidebar-menu" data-widget="tree"> 功能菜单 点击 不隐藏第三级 子菜单....在 ad ...
- Kibana问题搜集---下载源码,执行npm install 报错
npm ERR! code ELIFECYCLEnpm ERR! errno 1npm ERR! chromedriver@2.34.0 install: `node install.js`npm E ...
- day15 面向对象 成员
成员 1. 变量 1.实例变量 格式: 变量.xxx=xx (称为实例变量,也叫属性,字段)给对象用的 2.类变量 类变量:直接写在类中的变量就是类变量,类变量一般用类名来访问 其实就是类中相同的属性 ...
- java/Android String.split 字符串分割
特殊符号分割时需加[].如下图
- 支付宝支付集成中:refund_fastpay_by_platform_nopwd接口服务器通知验签不通过
在做p2p配资平台,也就是公司的项目,遇到了一个问题:refund_fastpay_by_platform_nopwd接口服务器通知验签不通过 下面是实录: 通知服务器的POST过来的数据: 1.si ...
- IKVM:java代码c#调用
在工作中遇到对接java接口,涉及到java加密或签名问题,.net无法实.就将java代码编辑为dll给.net调用 注:这里只做简单java代码处理,不涉及到复杂的java包 java文件处理: ...
- thinkPHP5.0 volist标签理解
{volist name="list" id="vo" offset="5" length="10"} .... {/v ...
- nginx + uwsgi 配置参考
参考 http://www.runoob.com/django/django-nginx-uwsgi.html ####### 20181029 cd ~wget http://python.org/ ...