MVC是不是这样理解?

onlytry 2006-07-27 11:41:34
V视图----就是.aspx页面
M模型----就是数据访问层和业务层的组合
C控制器----就是.aspx.cs中的控制组合

大家做项目,正规的是不是都这样.如果在ASP.net2.0中把项目分为数据访问层、业务逻辑层、表示层是不是就是应用了MVC的设计模式。

不好意思,问了个笨笨的问题。
谢谢您的指教。
...全文
371 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
onlytry 2006-07-29
  • 打赏
  • 举报
回复
TO:fanliang11(本人是北大青鸟的)

首先谢谢你的热情答复.
但我发贴的目的是希望有人确认一下我的理解是否正确.特别是
?????在ASP.net2.0中把项目分为数据访问层、业务逻辑层、表示层是不是就是应用了MVC的设计模式呢?????我希望得到YES OR NO的答案。
你好逗,用Java给我介绍。我问的是.NET。

TO:greennetboy(我的老婆叫静静)

谢谢你的答复。



fanliang11 2006-07-28
  • 打赏
  • 举报
回复
例子:http://dev.csdn.net/Develop/article/28/28063.shtm
fanliang11 2006-07-28
  • 打赏
  • 举报
回复
MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。

视图
视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services.

如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。

模型
模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

控制器
控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。

现在我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。

为什么要使用 MVC

大部分Web应用程序都是用像ASP,PHP,或者CFML这样的过程化语言来创建的。它们将像数据库查询语句这样的数据层代码和像HTML这样的表示层代码混在一起。经验比较丰富的开发者会将数据从表示层分离开来,但这通常不是很容易做到的,它需要精心的计划和不断的尝试。MVC从根本上强制性的将它们分开。尽管构造MVC应用程序需要一些额外的工作,但是它给我们带来的好处是无庸质疑的。

首先,最重要的一点是多个视图能共享一个模型,正如我所提及的,现在需要用越来越多的方式来访问你的应用程序。对此,其中一个解决之道是使用MVC,无论你的用户想要Flash界面或是 WAP 界面;用一个模型就能处理它们。由于你已经将数据和业务规则从表示层分开,所以你可以最大化的重用你的代码了。

由于模型返回的数据没有进行格式化,所以同样的构件能被不同界面使用。例如,很多数据可能用HTML来表示,但是它们也有可能要用Macromedia Flash和WAP来表示。模型也有状态管理和数据持久性处理的功能,例如,基于会话的购物车和电子商务过程也能被Flash网站或者无线联网的应用程序所重用。

因为模型是自包含的,并且与控制器和视图相分离,所以很容易改变你的应用程序的数据层和业务规则。如果你想把你的数据库从MySQL移植到Oracle,或者改变你的基于RDBMS数据源到LDAP,只需改变你的模型即可。一旦你正确的实现了模型,不管你的数据来自数据库或是LDAP服务器,视图将会正确的显示它们。由于运用MVC的应用程序的三个部件是相互对立,改变其中一个不会影响其它两个,所以依据这种设计思想你能构造良好的松偶合的构件。

对我来说,控制器的也提供了一个好处,就是可以使用控制器来联接不同的模型和视图去完成用户的需求,这样控制器可以为构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择模型进行处理,然后选择视图将处理结果显示给用户。

MVC的缺点
MVC的缺点是由于它没有明确的定义,所以完全理解MVC并不是很容易。使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。

你将不得不花费相当可观的时间去考虑如何将MVC运用到你的应用程序,同时由于模型和视图要严格的分离,这样也给调试应用程序到来了一定的困难。每个构件在使用之前都需要经过彻底的测试。一旦你的构件经过了测试,你就可以毫无顾忌的重用它们了。

根据我个人经验,由于我们将一个应用程序分成了三个部件,所以使用MVC同时也意味着你将要管理比以前更多的文件,这一点是显而易见的。这样好像我们的工作量增加了,但是请记住这比起它所能带给我们的好处是不值一提。

MVC并不适合小型甚至中等规模的应用程序,花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。

MVC是一条创建软件的好途径
MVC设计模式是一个很好创建软件的途径,它所提倡的一些原则,像内容和显示互相分离可能比较好理解。但是如果你要隔离模型、视图和控制器的构件,你可能需要重新思考你的应用程序,尤其是应用程序的构架方面。如果你肯接受MVC,并且有能力应付它所带来的额外的工作和复杂性,MVC将会使你的软件在健壮性,代码重用和结构方面上一个新的台阶。
viena 2006-07-28
  • 打赏
  • 举报
回复
Java中Struts的C是用一个Servlet来统一控制流程跳转的,.NET中并没有相应的控制器
邦迪代驾 2006-07-28
  • 打赏
  • 举报
回复
study
zhongwanli 2006-07-28
  • 打赏
  • 举报
回复
楼主注意:这两者并没有直接的关联。

从我个人的体会来讲,

数据访问与业务逻辑层 可看为 M
表示层可分为 V 和 C ;
onlytry 2006-07-28
  • 打赏
  • 举报
回复
谢谢答复,但是在在ASP.net2.0中把项目分为数据访问层、业务逻辑层、表示层是不是就是应用了MVC的设计模式呢?
greennetboy 2006-07-28
  • 打赏
  • 举报
回复
其实搂主所说已经是正确了,至于系统的体系结构,我一直就支持采用以这样基础的结构作为设计,然后再根据需要适当增加验证逻辑层,和通用函数层,总之,这个问题仁者见仁,智者见智。因为个人本来就有自己的设计方法。每人肯定都不一样。
fanliang11 2006-07-28
  • 打赏
  • 举报
回复
楼主懂拉吗?????我解释的已经很详细拉
fanliang11 2006-07-28
  • 打赏
  • 举报
回复
主要流程是这样的:前台用户提交某个jsp页面(视图层)后,转叫给servlet(控制层),然后servlet把相关的业务逻辑转交给(业务逻辑层)处理,接着业务逻辑层把处理后的结果
返回给servlet(控制层),再由servlet(控制层)把结果反馈给用户!
fanliang11 2006-07-28
  • 打赏
  • 举报
回复
简单地说就是一种模式
视图------给客户使用的界面,主要是一些jsp文件
控制器------控制页面流程,转发,提交,重定向等等
模型--------完成业务逻辑或者数据持久化等工作

MVC最主要的目的是要把表现层,逻辑层,模型3方面分开,降低系统的耦合度,提高系统的可维护性,健壮性
onlytry 2006-07-28
  • 打赏
  • 举报
回复
TO:viena(维也纳nn木人 [IQ=50,EQ<0])

.NET当中的.aspx.cs文件里的代码不就看作控制器吗?

TO:zhongwanli(㊣【为了老婆,二次重构____然后升★★】㊣)

没有关系吗?分层难道不是MVC模式的应用吗?

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧