技术开发 频道

WEB组件之战 ASP.NET单挑J2EE



    【IT168 专稿】前面我们分别对.Net和J2EE的框架组件和开发工具进行了比较,今天我们来看一下WEB组件之间谁将更胜一筹。在这篇文章中,我将谈谈我个人如何看待ASP.NET和J2EE Web框架之间的区别以及各自的优势。

历史背景

    从Servlets正式作为J2EE规范发布前,我就开始使用它Servlets。由于其易学、易懂和强大的功能而被很多人接受,随着时间的过去,它们已经成为J2EE组合中最成功的组件之一,Servlet经常与JSP配套使用,JSP是Java对微软的ASP的回应,尽管人们期望JSP在易用性、接口的透明性和工具支持方面有更进一步的改进,但是它依然摆脱不了servlet的身影。

    在开发的过程中,许多开发程序员对model1开发框架模式不是很满意,导致了struts,spring(model2)等开源框架的出现,这种各自为政的趋势形成了现在J2EE Web组件不像一个整体,而显得比较散乱。

   同时这也给我们的比较工作带来了难题,拿ASP.NET与J2EE这边的任何一部分比较几乎是不可能的事情。在.NET中,ASP.NET是一个整体,而且是开发Web应用的唯一选择。而在J2EE中,开源框架太多,你不能说哪一部分能是J2EE中的“ASP.NET”。

    但是,我们今天还是要做个比较,那么我们就在ASP.NET和J2EE Web优缺点来做个比较。

ASP.NET的先天优势

    总体来说,我非常喜欢ASP.NET,它非常容易使用,开发者只需花几天的时间就可以理解这个框架的设计思想,并开始用它来开发项目。另外Visual Studio开发工具是为Asp.net量身订做的,用它来开发程序是件轻而易举的事情,它集成大量的开发组件,可以很轻松的完成常见的Web开发任务。

    它的页面代码分离(Code Behind)的概念也非常的容易理解,并且在MVC模式上可以更加灵活的实现扩展,而且他的配置文件也不像J2EE那样冗长难懂。

    另外,还有一个值得庆幸的事情,微软准备发布Atlas AJAX工具,这样部署ASP.NET应用程序会变得更加容易,不需要Ant、Mavens、Lvys等等。

ASP.NET存在先天不足

    但是在这些闪光的背后,Asp.net也有它先天不足之处:

    1、值得怀疑的内容存储与信息显示分离技术(Content-Presentation Separation)

    当你想应用自己的风格定义一个CSS类时,你需要非常了解框架产生的代码和它的属性,从而让它与CSS类能真正配合工作,在这个细节上Asp.net做的还不是很智能。也就是说,还没有完全实现内容存储与信息显示的分离(Content-Presentation Separation),这与CSS官员们所鼓吹的完全背离。

    2、增加数据绑定对象

    这是Asp.net相比J2EE高明之处,却同时又是一个死穴,在大型Web站点中,随着站点规模的扩大,数据库访问需求会显著增长,这个时候跟踪和维护这些嵌入的查询会变成一个非常令人头疼的问题。

    J2EE中Web组件存在的问题


    1.部署模型的复杂性

    当你坐下来查看Java的Web部署说明的时候,你可能会忍不住问自己:是谁搞得这么麻烦。对于你开发的每一个细小的Web组件,你都不得不花3-4步额外的步骤,包括Xml配置和部署,以看到你的组件可以对Web相关的行为进行响应。每一个组件必须在Web.Xml文件中注册,另外如果你使用的框架比较老的话,你可能需要处理更多的Xml文件以适应它们的语法。

   2.核心API的裸露

    不要期望从Servlets API得到太多的东西,Servlet是基于POST/GET和HTTP参数导向的,其应用接口(API)非常容易使用,但是功能却非常有限。

   3.过度饱和的选择

    对Java来说,有太多的Web框架可以选择。在众多的框架中能否选择到适合你的,却是一件非常头痛的事情,而且没有人可以肯定的告诉你哪一个选择是最适合你的。

    4.需要应用程序服务器

   尽管基于WAR文件的部署非常简单,但是你不能在任何你想要的服务器上安装它们。你还需要一个应用程序服务器或Servlet容器来运行它。当然这不是什么大的问题,你可以下载Tomcat,让你的Web应用程序运行在它上面。

J2EE与生俱来的优势

    1、可移植性

    Servlets规范的主要强大之处在于它是一套具有简单性、可移植性、应用广泛性和高度标准化的接口。因为Java WARs可能是目前移植性最好的企业组件,从一台兼容J2EE服务器移植Java Web应用到另一台服务器是一件非常容易的事情。这和平台操作系统没有什么关系,只要主机应用服务器保持及时的更新,应用程序可以被轻松的移植。

   2、可扩展性

    正如刚才所说的,Servlets接口是非常简单和可扩展的。这种简单的特点,使得独立的框架开发者们可以在Servlets接口的基础上,开发一些非常创新的新一代框架,其中最好的一个例子就是RIA(富Internet应用)框架Laszlo,它与Java是完全独立的,它是一个完全支持XML的类JavaScript脚步语言。实际上,它就是一个可以运行在任何兼容J2EE服务器上的WAR应用。

总结

    在我看来,在ASP.NET与J2EE关于Web组件的比较中,ASP.NET具有一定优势。尽管我喜欢Java,因为Java是我的主要技术方向,但是我感觉在Web组件方面,Sun做的工作还不够。

    微软尽其所能来提高开发者的生产力,同时提供清晰一致的体系架构,而J2EE则深陷其中。Servlet本身几乎没有在高生产性上下功夫,它们从来没有改变其陈旧的想法Xml文件的部署模型,而且因为主推JSF而面临Struts、Spring MVC或WebWork的挑战,造成了与开源社区的越走越远。

    不过对于Servlet规范的下一个版本,我还是充满期待。新规范将向开源社区敞开门户,据我所知,这将是一个简单而优雅的接口规范,而没有令人疯狂的Xml。Servlets将被作为一个普通的Java对象,这是一个令人兴奋的消息。
0
相关文章