谈谈三层架构与MVC区别 在网上查了下,有点晕,请高手谈谈看法? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 MVC是一种设计模式,我们可以用它来创建在域对象和UI表示层对象之间的区分。 三层架构是在一个应用程序中把数据(数据层),业务逻辑(业务层),和用户接口(表示层) 分开的一种概念。把业务层和表示层分开,我们明白解决方案在一些地方是模糊的,完全分开是一件困难的事。对于缺少经验的开发者,MVC 是一种实现三层架构的比较清晰的实现。 没可比性 http://topic.csdn.net/u/20090710/14/07f4447d-60c4-4b74-af1c-ea1b6e2e9ca7_2.html 区别还是有滴1、一个是架构一个是设计模式(大原则上就有个差异)2、MVC中有Controller这个 而三层架构没有(其实也可以有)3、Model也有区别 MVC中的Model是有业务逻辑与数据访问组成4、相同点就是都有个View(这个必须有) 楼上都搞混了把,MVC只是表示层的一种结构而已,在MVC的Controller中一样可以使用三层WebForm本质上也是MVC,属于改良版吧 我个人认为三层架构就是由MVC延伸过来的,没有MVC就没有现在的3层架构本质上是相同的,但我有点不明白,为什么有了在开发中3层架构思想,微软还要推出个MVC? 在.net中是三层,在java中是mvc? 主要是关注的点不同如果用广告大王赵本山大爷的包袱来说如何把大象装进冰箱里?那么3层架构的答案就是,“把冰箱门打开,把大象装进去,把冰箱门关上”-他首先关注的顺序,步骤和工序而mvc的答案是:“我需要做一个什么模样的冰箱模型,才能够适合这个要求”ps:当然实际工作中实际并没有这么大区别,因为目标是要把大象放进冰箱,无论是先考虑模型也好,还是先考虑步骤也好,目标相同。考虑步骤的最终还是要建立一个合适的模型,而考虑模型的最终还是要使用合适的步骤 不是。三层跟语言没有关系,框架概念都是一样的。mvc相当于三层中的一层或者两层,而并不包括三层的全部。说mvc有利于三层,是因为它强调界面与数据存取分开的机制,这就为业务逻辑层(这其实核心在后台)打下了预备。但是那些只写单机小程序的人可能很容易迷惑。在我们稍微大一点的c/s程序时,开发前台系统时,只要考虑mvc,使用一个对应与后台BLL层的代理作为mvc中的m层。在我们开发后台系统时,则使用一个通讯子系统(中间件)来将BLL层开放给前台。 嗯,补充说明一下通讯中间件的含义。在我的文档中,经常把它叫做“xxxxxx接入子系统”,例如“HTTP接入子系统、TCP接入子系统、WebService接入子系统、SMTP接入子系统、GPRS接入子系统、ashx接入子系统”等等,它使得同样的后台系统为许多客户端代理开放。或许,四层系统更清楚一些。 三层的核心是BLL,而mvc的核心是c。如果让用户只要将v以声明的方式绑定到m上,当用户修改一个界面元素的时候所有跟它连着神经的m(的某个对象的某个属性)就自动感知地去修改了,反向传递亦然。对于用户行为也是如此。如果设计界面时不需要编写程序,那么就需要我们把c单独拿出来研究,使得它可以自动入侵到v和m架构中,建立属性变化和操作监听机制。实际上,这样做下去,我们开发v的时候就非常快,因为越来越不需要编写代码。可见mvc注重前台开发,而跟传统的后台开发不一样。 4层也许很好,原始模型和view之间还是存在不少差异即使mvc阵营,也就不少采用新增viewmodel层的来消除差异的实际我认为,现在3层和mvc这两个东西争论应该结束,目前他们都有不少融合的趋势比如petshop的factroy,如果借用Ioc的话,那个中间几个层就可以消失了。而如果本身在model里加入context上下文关联机子,那3层架构的model,也就未必不是mvc的viewmodel 实际上已经非常明白了无非是2个视角架构论的以软件工厂为目标的:就像一个珠宝加个工厂,莫管它是啥,步骤就是一样,切割,打磨,加工,抛光,镶嵌----他所做的就是忽略产品的不同,谁来都一样而mvc论的则是以设计目标为导向:我要一个126面的紫色水晶八爪镶嵌的戒子,那么生产和设计的目标就全是围绕这个目标而作的,设计师如何设计,生产工人如何切割,打磨,加工,抛光全是以最终的目标为导向(view-model),并且在每一步就严格控制在统一的生产检测机制上(control)实际上作为新人,就别管这些东西了。他对新人实际上作用不大,送你3句话一本小说《灵山》中的3句话1:莫管他是人、是仙。且看他如何与人打交道-------------管他是啥,能解决问题即可2:你已在悟道中途,那就守好心中所悟之道,见怪莫怪便是。3:莫说是师父我,就算漫天神佛,在传人心中也要做到在与不在,并无分别-------自己的道就是自己的道,自己悟到既可,管他是否是神仙之道,还是妖魔之道,别人的道是别人的道理,莫管!你管了解自己的道即可 很强悍的话啊,MVC模式是"Model-View-Controller",在Java的三层结构就是这么定义的,但是深入挖掘其含义不是这里能说清楚的,这位星级用户概括的甚是精炼,例子着实震撼 楼主看三层的例子然后自己建个MVC项目看看就知道了大致概念大家理解的可能差不多,但表达出来会不一样这种意会为主的东西,楼主还是有自己的理解来的好 貌似有的同学把mvc和微软的asp.net mvc框架弄混了 呵呵 我觉得你用MVC做个项目一切就明白了 上面讲得也真都透彻的 看看吧~! 顶15楼,我也从来没有在意过啥MVC,自己也做过很多架构,都没有去刻意区分是不是三层,是不是MVC的。那我们用的PDF.NET数据框架来说,Model就是业务实体类,View就是包含DataControl的用户接口界面,而Controller就是业务层,包括对实体进行操作的实体查询类。最终的解决方案我是这样分层的:UIBLLDALModelServicePDF.NET运行时其中PDF.NET运行时为各层提供支持。 三层是一种软件的架构,WINFORM,WEB都一模一样。MVC是框架。MVC是对三层中的WEB层进行了阔展。 pxh360395296 说的真好!、 MVC和三层架构,是不一样的。 三层架构中,DAL、BLL、WEB层各司其职,意在职责分离。 MVC是 Model-View-Controller,严格说这三个加起来以后才是三层架构中的WEB层,也就是说,MVC把三层架构中的WEB层再度进行了分化,分成了控制器、视图、实体三个部分,控制器完成页面逻辑,通过实体来与界面层完成通话;而C层直接与三层中的BLL进行对话。 观望.. 一直以为mvc跟三层差不多 求正则 动态asp.net网页 嵌套的Iframe页面地址,后台无法执行Page_Load事件 还是关于DropDownList1的问题 Type 类的问题 我做了一个ASP.NET项目一般如何部署 关于树的查询问题 网页图片输出(System.Drawing)的问题 谁能把这句三向选择的JAVASCRIPT语句变为c#语句? 字符串处理问题? AutoCompleteExtender无法实现 关于Exception.StackTrace详细错误信息的问题
三层架构是在一个应用程序中把数据(数据层),业务逻辑(业务层),和用户接口(表示层) 分开的一种概念。把业务层和表示层分开,我们明白解决方案在一些地方是模糊的,完全分开是一件困难的事。对于缺少经验的开发者,MVC 是一种实现三层架构的比较清晰的实现。 没可比性
http://topic.csdn.net/u/20090710/14/07f4447d-60c4-4b74-af1c-ea1b6e2e9ca7_2.html
WebForm本质上也是MVC,属于改良版吧
本质上是相同的,但我有点不明白,为什么有了在开发中3层架构思想,
微软还要推出个MVC?
不是。三层跟语言没有关系,框架概念都是一样的。mvc相当于三层中的一层或者两层,而并不包括三层的全部。说mvc有利于三层,是因为它强调界面与数据存取分开的机制,这就为业务逻辑层(这其实核心在后台)打下了预备。但是那些只写单机小程序的人可能很容易迷惑。在我们稍微大一点的c/s程序时,开发前台系统时,只要考虑mvc,使用一个对应与后台BLL层的代理作为mvc中的m层。在我们开发后台系统时,则使用一个通讯子系统(中间件)来将BLL层开放给前台。
可见mvc注重前台开发,而跟传统的后台开发不一样。
1:莫管他是人、是仙。且看他如何与人打交道-------------管他是啥,能解决问题即可
2:你已在悟道中途,那就守好心中所悟之道,见怪莫怪便是。
3:莫说是师父我,就算漫天神佛,在传人心中也要做到在与不在,并无分别-------自己的道就是自己的道,自己悟到既可,管他是否是神仙之道,还是妖魔之道,别人的道是别人的道理,莫管!你管了解自己的道即可
然后自己建个MVC项目看看就知道了
大致概念大家理解的可能差不多,但表达出来会不一样
这种意会为主的东西,楼主还是有自己的理解来的好
UI
BLL
DAL
Model
Service
PDF.NET运行时
其中PDF.NET运行时为各层提供支持。
MVC是框架。
MVC是对三层中的WEB层进行了阔展。
MVC和三层架构,是不一样的。
三层架构中,DAL、BLL、WEB层各司其职,意在职责分离。
MVC是 Model-View-Controller,严格说这三个加起来以后才是三层架构中的WEB层,也就是说,MVC把三层架构中的WEB层再度进行了分化,分成了控制器、视图、实体三个部分,控制器完成页面逻辑,通过实体来与界面层完成通话;而C层直接与三层中的BLL进行对话。