MVC非常适合于交互的分布式系统。MVC结构是为那些需要为同样的数据提供多个视图的应用程序而设计的,它很好的实现了数据层与表示层的分离。MVC(Model-View-Controller)把交互系统的组成分解成模型、视图、控制器三种部件。对于.NET和Struts 都提供了对MVC的支持,虽然殊途同归,不过他们的具体实现方法有一定区别。
ASP.NET的实现方式
图1 ASP.NET 实现MVC的流程图首先为了将试图和控制器分离,在建立新的ASP页面的时候,可以将Page的代码同code的代码分开存放。ASP.NET通过Codebehind、用户控件(User Control)以及自定义控件Custom Control)等方法真正做到了代码的分离。页面的.aspx文件存放的仅仅是带有asp标签的html文件,而他的Controller则放在同名的.cs文件当中。在.aspx文件中通过属性标签 的CodeFile来串接。
控制器提供一个控制和处理请求的集中入口点,它负责接收、截取并处理用户请求;并将请求委托给分发者类,根据当前状态和业务操作的结果决定向客户呈现的视图。在这一部分主要定义了HttpReqDispatcher(分发者类)、HttpCapture(请求捕获者类)、Controller(控制器类)等,它们相互配合来完成控制器的功能。
新的ASP.NET提供了一些新的文件和目录提高程序的易扩展性:
Sitemap.xml 这个文件建立了系统的站点地图,可以很好的定义站点的层次结构,帮助使用面包屑(breadcrumbs)等工具。
/App_Data/ 此目录用于存放数据库的文件。这样在部署的时候,可以自动地将文件加入本地数据库服务器,特别对于新的SQL Server 2005, 可以在不做任何配制的情况下,完全自动地进行数据库添加。
Struts 实现方式
图2Struts的MVC模型
在Struts框架中Controller功能由ActionServlet和ActionMapping对象构成,核心是一个Servlet类型的对象ActionServlet,它用来接受客户端的请求。ActionServlet包括一组基于配置的ActionMapping对象,每个ActionMapping对象实现了一个请求到一个具体的Model部分中Action处理器对象之间的映射。
Model部分由Action和ActionForm对象构成。所有的Action处理器对象都是开发者从Struts的Action类派生的子类。Action处理器对象封装了具体的处理逻辑,调用业务逻辑模块,并且把响应提交到合适的View组件以产生响应。Struts提供的ActionForm组件对象可以通过定义属性描述客户端表单数据。开发者可以从它派生子类对象,利用它和Struts提供的自定义标记库结合可以实现对客户端的表单数据的良好封装和支持,Action处理器对象可以直接对它进行读写,而不再需要和request、response对象进行数据交互。通过ActionForm组件对象实现了对View和Model之间交互的支持。
View部分是通过JSP技术实现的。Struts提供了自定义的标记库,通过这些自定义标记可以非常好地和系统的Model部分交互,通过使用这些自定义标记创建的JSP表单,可以实现和Model部分中的ActionForm的映射,完成对用户数据的封装。
表示层的开发
对于表示层的开发,ASP.NET有很大的优势,原因:1、ASP提供了强大且多样的ASP控件标签,而且标签格式统一,易学。比如对于登陆,ASP.NET 2.0 提供了独立的Login控件,可以完全实现验证,跟数据库比较,增加新的用户,管理角色等等一些列活动,并且不需要开发人员写出任何代码。
开发环境
对于开发环境的配置,JSP由于有太多平台,规则不统一,所以学习成本庞大,并且不提供相关的帮助文件,很难查找资料。
对于设计模式的应用
由于J2EE大量的使用设计模式,并且Struts本身就使用了许多设计模式,比如分发者模式。但是ASP.NET并没有提出设计模式等实现方式,MVC这个框架也是没有完全实现,而Struts却完整地提供了完整的解决方案。
配置管理
由于Struts频繁地使用配置文件struts-config.xml来管理,这种集中的管理,造成一种耦合,这样开发人员如果进行修改的时候,必须对应修改struts-config.xml文件,这个非常麻烦,并且不利于项目的分配。所以,struts团队开发不容易。
部署和调试
由于ASP.NET在Visual Studio 2005 中集成了一个WEB服务器Casi,可以直接将代码自动部署到里面,不需要用户的操作。在实际部署的时候,也只需要将程序部署到IIS就可以了。所以微软的整个调试是非常方便的。
总结
综上所述,如果要快速开发界面美观的程序,使用ASP.NET无疑非常的方便的。但是隐藏了许多开发的细节和实现过程,对于要提高编程能力的人来说,这个显而易见的不是个好的结果。并且微软很少使用和提到设计模式,在对实践MVC等设计模式的时候,并没有给出很好的意见。

没有评论:
发表评论