经验及第

专注于IT技术经验

导航

ASP是否也可以MVC

   MVC一直是JAVA EE体系的招牌晃人动作,其实那并不算什么,我们的WebForm里其实也跟它一样有MVC.(某些技术在内部实现上其实是差不多的,只是反映给我们开发者的视图不一样而已,某些东西要靠发掘)
   JAVA EE中的MVC(单纯的Servlet+Jsp,不是说框架)是说请求发送至Servlet,而不是直接请求.jsp页面,在Servlet中进行业务逻辑处理(大多是调用业务逻辑组件进行真正处理),然后再进行重定向让.jsp页面(或其他视图技术)显示.等等.而它的那些开源MVC框架中大多实现一个核心控制器,负责拦截请求……省略.
   其实,它的所谓MVC是靠文件后缀来迷惑大家(不过jsp确实比servlet更容易页面显示),jsp页面最终翻译成了java文件,然后到字节码,所以无论请求的是它所谓的控制器:servlet还是视图:jsp(或者其他视图),本质都是一样的,只是servlet中不再像以前那样用来显示页面而已.
   我当初学习j2ee时,看到目录里有讲到MVC,就在想webform中实现mvc可以通过内置对象保存数据模型来实现.然后翻到j2ee的mvc那里,果然它也是这样的(分为几个生命周期)
   在asp.net下,全部都是aspx后缀,但也最终生成了一个page类的派生类,那么我们也可以学j2ee那样,在一个page类中不进行页面显示,而进行业务逻辑处理,把结果保存到内置对象(比如session呀),然后重定向到其他页面,进行显示.达到了同样的效果.
   在一篇文章里混乱的MVC……,问道:aspx和aspx.cs包含着一起了,那么我们是先进入到哪了呢?控制器还是视图?
   我只能说我们都进入了负责处理用户请求的那段线程中.至于是否是逻辑处理还是显示,那就看具体的代码咯.
   不要以为在页面上输入/servlet就是进入了控制器,不要以为这页面输入/view.aspx就是进入了试图(只不过反应给我们程序员的情况看似如此而已)
   所以当微软也的IIS+.NET也实现能访问/servlet这类的请求,而实际上本质并不改变什么,那我们开发人员就认为情况不一样了.
   我们的事件编程模型,能在页面中点击按钮实现再次请求这个page类,拦截请求,分发请求到相应的方法,在其中进行逻辑处理,然后再进行本页显示(或重定向到其他page类,在它的page_load中使用session保存的数据,让控件显示)....那么这又算不算MVC呢?
   所以技术本质上并没多大区别,比如.net2.0中的母板页,其实jsp中的jsp动作指令同样可以完成,只不过前者需要每次在新页面中手动加那几个字符,而.net中可以通过工具新建web窗体时用鼠标选择母板页而已.它们各自的新页面最终生成的东西没有谁优谁劣,机制都一样.
   本文(其实并没技术含量,只是想看清楚一点)是否挖掘到金子,抑或是铜板,还请大家评判下.

posted on 2007-12-21 12:57  梵天  阅读(931)  评论(0编辑  收藏  举报