俺眼里的 Asp.Net vs. JSP

要知己知彼,孙子同学说的。用3天了解了下J2EE(其实是Struts、Spring、Hibernate这些J2SE的东东搞出来的符合JavaEE规范的东东,当然J2EE框架还有很多,俺就纯入门,有错请指正),稍微和Asp.Net对比一下。

.aspx和.jsp的访问过程:

Asp.Net Page是一个HttpHandler,默认是处理到*.aspx的请求。Asp.Net request pipeline大致是:IIS到aspnet_isapi -> HttpModule1 -> HttpModule2 -> ... -> HttpModuleN -> 对应的HttpHandler -> Response给IIS。不要觉得Page特殊,他只是Asp.Net的N个HttpHandler和N个Control其中一个。

Jsp页面是一个Servlet。一种访问服务器资源方式是直接访问*.jsp,另外一种是通过servlet-mapping访问一个servlet。不管是哪一种,一般实际可用的Rquest->Response过程都要经过一个以上的servlet。但不好说servlet更像HttpModule还是HttpHandler,因为一般对什么文件的request被送给Servlet Container(比如Tomcat)不是他可控的,而是前端服务器(比如Apache),而进了Servlet Container以后就没HttpModule、HttpHandler粒度分的这么细了。

WebForm模型 vs. MVC模型:

区别太多了。。可以看看一个Asp.Net的MVC实现MonoRail和WebForm的对比,个人感觉对Enterprise的应用绝对是MVC好,整个Application的逻辑清晰,易于管理维护;WebForm的优点是单一页面逻辑清晰,而且在VS的Visual Web Developer这个强大的IDE和控件机制下提供很好的DesignView(BEA的Jsp Editor是eclipse插件,也可作可视化开发,不过由于Jsp没控件这个概念,不好做到准确的Design time rendering)。所以Asp.Net做中小型应用产能绝对高,但要做大型应用,除了原来已有系统更换成本大、Windows太烂之类的因素以外,主观上他也难做好。(不过俺设想和WF结合起来后会有改善)

Data Access:

相信95%以上的Web应用说白了就是数据库CRUD,数据访问绝对是最重要的。Java下面要纯ORM的大多数都用Hibernate,特点是难配置,代码优雅,速度貌似不咋的(当然快慢和写配置文件的水平有很大关系);还有一种折衷的是用iBatis,这个要自己写SQL然后M到O,感觉有点不纯正,不过效率上应该没问题了。

而Asp.Net下面的DAL大多是移植的(很多XXX Java项目都有移植,加个N-或者.Net变成NXXX、XXX.Net再到SF一搜。。)。比较著名的还是NHibernate和iBatis.Net,还有Enterprise Library的DAAB。后来有ActiveRecord对NHibernate的进一步封装,貌似不错的样子。不过俺一个可怜的学生没机会接触大项目,用可爱的SubSonic加存储过程就能过的挺好,所以也不清楚哪个好。。

Day Dreaming:

Sun已经承诺Java开源了,而.Net想跨个平台还要用Mono,M$有点对不起搞.Net的程序员哦。 

http://www.cnblogs.com/dxz/archive/2006/10/06/my_view_of_aspx_vs_jsp.html

你可能感兴趣的:(俺眼里的 Asp.Net vs. JSP)