技术开发 频道

华山论剑 .NET挑战J2EE之体系架构思想


【IT168 分析评论】

    对于J2EE和.NET这两大平台,人们往往不能完全做出属于他自己的判断,因为人们往往是先听到或称赞或批评的意见,然后才开始真正花时间来研究这两个平台的历史背景和主要解决的问题。

    因此,在开始我的《.NET单挑J2EE》系列文章之前,我将首先和大家一起检视一下这两个平台的发展背景,以及建立这两个框架的主要开发意图。我个人感觉这种背景信息是非常重要的,因为它可以给你一种更长远更好的指导观点:在实际开发中究竟哪一个平台最适合解决你的实际问题。

J2EE优势和弱势 

    注:从1.5版本开始,J2EE将被命名为Java EE 5.0。

    J2EE的的诞生是为了给企业提供比CGI或CORBA更完善、更具有伸缩性的选择,并帮助规范更深入的企业开发技术,例如面向消息的中间件(MOM)。因此J2EE具有以下特点:

    以更强大的Servlets机制代替CGI;
    以EJB代替CORBA(注:即将到来的EJB 3.0更加完善); 
    一些合理的成功之处(例如针对MOM的JMS); 

    由于J2EE规范制定团队从第一天开始就想满足企业中每一个人的每一种需要,这种做法让J2EE成为一个强大同时也非常复杂的框架平台。

   下面谈以下我个人在使用这个平台的时候所遇到的一些比较大的问题:

    1、某些不必要复杂的API常常需要花费很大的精力来学习;

    2、API设计主要受像Sun公司等厂家的影响,而不是根据最终用户,因此导致API对开发者的友好程度不够。

    3、运行J2EE应用程序需要造价比较昂贵的应用服务器。这些应用服务器带来的性价比非常低。

    当然,J2EE平台也具有很多令人喜爱的优势:

    1、J2EE的API非常灵活。大多数J2EE的API都具有可扩展性和灵活性的内在特点。这种可扩展性给了有才气的开源开发者充足的空间。J2EE的开源OR映射功能、企业对象管理和MOM开源框架目前还没有对手。

    2、对于重量级、严谨的企业应用的开发来说,J2EE是一个非常不错的起点。诸如Spring和Hibernate等框架使得开发者可以开发高性能、高相关性或综合解决方案,可以轻松的开发跨越不同的企业系统的应用。

    3、J2EE可以运行在任何平台上,小到x86 Windows,大到高端的Linux/Unix/大型机应用。而运行多个平台对大型企业来说是常见的事情。
【IT168 分析评论】

.NET优势和弱势


    与J2EE相反,.NET是以桌面为中心的VB和COM组件发展而来的。从它诞生的第一天,其目标群体就是过去或现在的使用VB基于Windows开发的人群。微软想尽力取悦于VB开发者,开发了一个更易用而且强大的企业开发平台。.NET平台上主要的架构方面的改进包括:

    1、“引入”了Java风格的语言-C#.NET

    2、支持简单对象访问协议(SOAP),支持面向对象XML架构

    3、从VB到VB.NET的重新设计,使之成为完全面向对象的语言

    然而,当我使用.NET框架的时候,发现该平台存在的几个比较大的问题如下:

    1、只支持一个平台。无论微软怎么把它夸的天花乱坠,对企业来说,只支持单平台都是一个很大的限制,已经不能满足与现在的实际情况。即使你的公司的所有应用程序目前都是运行在Windows的.NET平台上,并且运行的非常好,但是一旦出现合并或收购等情况,就有可能让你面临跨平台的需求。

    2、这是一个很少需要思考的架构,即使业界经验已经显示.NET可以非常好的运行大内容的应用程序,通常情况下,.NET的体系架构思想似乎依然集中在为小型的电子商务应用服务上,例如购物车之类的应用。

    当然我也体验到了.NET平台的一些优势:

    1、同样是单平台,在单平台上工作使得一切都变得那么简单;

    2、专注于开发者,让开发者真正感到高兴的一件事就是开发者会感觉到所有的事情都是围绕他服务的。而其他J2EE的API,例如EJB、JMS、JMX等等,似乎都是为大型J2EE厂商设计的,例如IBM、HP和SUN等。在.NET中,微软给了开发者很大的自由空间让其做出自己的选择,.NET的架构思想就是以开发者为中心,实际上,微软想让开发者感觉使用.NET就是使用VB那样简单。(也许从某些方面来说,有的人会说这种“傻瓜型”编程方式是一种倒退)。

    3、简化的部署方式,让你可以很轻松的把CS架构的应用迁移到企业开发模型。假如你的公司的大多数应用都是用VB或其他类似的CS架构技术开发的,你会发现迁移到.NET平台非常简单。
【IT168 分析评论】


总结:

    以前我看过几篇关于.NET和J2EE的对比文章,它们大多数是着眼于框架的内部工作方式,例如包含了哪些应用程序接口(API)等等。

    我发现这些问题实际上并不是影响人们对这两种平台做出选择的本质原因。两种框架能完成的工作大体相同。两种框架的内部执行方式,无论是CLI还是Java VM,都并不是开发者所关心的主要问题。

    以前我没有在其他文章中看到的一个事实是:这两种平台都是面向对象的,这实际上对任何解决方案架构来说是一个非常重要的因素。

    架构设计师们一般首先关心的是应用程序核心对象和相关性设计的质量和寿命,假若一种平台支持核心的面向对象和相关性设计,这个平台无疑是正确的选择,我们讨论的这两个平台都可以做到这一点。

    但是.NET由于其略嫌不成熟的OR映射工具,比较难于支持特定领域模型的独立执行的数据库。 

    另一方面,J2EE由于面向对象和跨企业集成工具的支持,可以没有限制的实现领域模型。对于通过MOM产品连接,运行在Linux、Solaris或AIX机器上的企业ERP方面,J2EE正可以大展手脚。

    在中小企业领域,专注于典型Web应用和基于数据库的业务应用程序,.NET无疑是一个更成熟和更高效的选择。如果你需要以一种更可预测的方式移植或启用你的CS应用到Web平台上,.NET也是一个不错的选择。

    最后,我认为.NET在Web服务上的优势要比J2EE强。因为微软是基于SOAP的WebServices之父,它在.NET平台中集成的如此之好,以致于你感觉不到他们的存在。在.NET中使用WebServices,就如同使用另一个语言类型那么简单。

    由于现在WebServices是一个相当具有吸引力和令人关注的话题,后面我将单独用一整篇文章来介绍.NET和J2EE中的WebServices。

    下一篇文章,我将从一个开发者的角度来比较“J2EE单挑.NET之框架组件篇”。
0
相关文章