用户在进行系统建设时,所采用的技术架构至关重要。目前智慧校园及电子政务系统所采用的技术架构主要有二种:一种是以J2EE为主的技术架构,一种是.NET架构。
J2EE的全称是Java2EnterpriseEdition,它是由SUN公司领导,各厂商共同制定,并得到广泛认可的工业标准。其设计初衷就是利用分布式结构的可扩充性来建立强壮的互联网应用。J2EE是一个开放的系统构架,使用符合J2EE规范的软件,客户可以依据其喜好和实力来选择不同应用服务器,从基于open source的免费软件到高端满足B2B需求的套件来搭建自己的系统。
Microsoft .NET是微软公司推出的一个系统构架。它的最大的优势是具有很大的Windows装机量做后盾,对客户端应用的支持比较好。但基本上只能占领低端应用的市场,而对关键应用的支持比较差。跨平台能力差,安全性能不高,只支持微软平台,是私有的技术,只由微软提供支持。
1).体系架构的比较
作为彼此竞争的应用平台,J2EE和.NET开发平台在目标和体系结构上极其相似,但在实现上又完全不同。
(1)类似的平台基础构造 J2EE和.NET两个平台在底层的执行引擎都源于托管的虚拟机概念,但.NET的CLR沿着Java虚拟机(JVM)走得更远,CLR在借鉴了JVM的自动垃圾收集、异常处理等机制的同时,又为.NET平台添加了多语言支持、组件自描述等新的特性。
(2)相同的三层/多层体系 基于三层/多层分布式计算结构已毋庸置疑地成为当今企业应用的主流模式,也是两个平台较量的着力点。
两种架构的简单对照如下表所示。
表J2EE与.NET架构比较
架构 比较项 |
J2EE |
.NET |
通信协议 |
Remote Method Invocation over Internet InterOrb Protocol (RMI/IIOP) |
XML |
编程语言 |
Java |
C#,VB.NET,COBOL等 |
运行时环境 |
Java Virtual Machine (JVM) |
Common Language Runtime (CLR) |
胖客户端 |
Java Swing |
Windows Forms |
目录服务 |
Java Naming and Directory Interface (JNDI) |
Active Directory Services Interface (ADSI) |
数据访问 |
Java Database Connection (JDBC) |
Java Connectors ADO.NET |
异步消息处理 |
Java Message Service (JMS) |
Microsoft Message Queue |
表示层技术 |
Servlets, Java Server Page(JSP) |
ASP.NET |
中间层组件模型 |
EJB,JavaBean |
COM+,COM |
安全访问 |
JAAS |
COM+ Security Call Context |
事物处理 |
Java Transaction Server (JTS) |
Microsoft Distributed Transaction Coordinator (MS-DTC) |
开发工具 |
Borland JBuilder,IBM VisualAge 等 |
Visual Studio.NET |
2)移植性比较
在移植性方面,.NET支持跨语言,J2EE支持跨平台。
微软通过.NET通用语言运行时来消除编程语言的差别,“选择.NET平台就意味着选择Windows”,这句话至少在可预见的一段时间里仍然是一个基本事实。J2EE则通过Java虚拟机来消除平台差别,跨平台是它的一大卖点,也是在选择企业应用开发平台时的一个重要参考因素,几乎所有的主流操作系统都提供了对J2EE的支持;实际上如果要搭建跨Unix、Windows等多个操作系统平台,J2EE平台几乎是惟一的选择,J2EE更关注跨平台而不是跨语言。
3).安全性、稳定性比较
WINDOWS本身的安全漏洞,使得.NET的安全性不如J2EE。同时,在应用服务器的选择上,.NET只能用IIS,安全性、稳定性难以保证;而J2EE有更多的选择,可以在诸多遵循标准的厂商所提供的应用程序服务器中,选择最符合需要、成本最低、而且又被认为是最佳的平台。
4).可扩展性比较
.NET平台的扩展思想是基于软件的横向扩展,而J2EE平台的扩展思想则是基于硬件的纵向扩展。
Windows系统一般只能扩展到不超过8个处理器,而Sun的系统却可以扩展到100个甚至更多处理器。
基于J2EE平台的应用程序可被部署到各种操作系统上,例如可被部署到高端UNIX与大型机系统,这种系统单机可支持64至256个处理器,这是NT服务器所望尘莫及的。J2EE领域的供应商提供了更为广泛的负载平衡策略,能消除系统中的瓶颈,允许多台服务器集成部署。这种部署可达数千个处理器,实现可高度伸缩的系统,满足未来商业应用的需要。
5).成熟度比较
在平台的成熟度方面,两者也有一比。J2EE在1999年形成了成熟的架构,发展至今已经具有相当成熟的、经过检验的企业应用系统。而.NET究其渊源是源自微软以前开发企业应用程序的平台DNA(Distributed Network Architecture),其中包括了许多已经被证实的技术,并且这些技术已经在产品中得到实现,包括微软的事务服务器、COM+、消息队列和SQL Server数据库等。
6).第三方厂商的支持
J2EE作为一种开放的规范,从一开始就得到了众多厂商的支持,IBM、BEA、HP、Oracle等在J2EE的实施上都有较大的投入。目前市场上最好的J2EE应用服务器并不是Sun与Netscape合资的iPlanet,而是BEA的WebLogic和IBM的Webshpere。开发工具有Borland的JBuilder、Sun的Forte for Java、BEA的WebLogic Workshop、Oracle的JDeveloper、IBM的VisualAge for Java等。
而.NET在设计之初就紧紧地把平台规范与产品胶合在一起。虽然,NET架构的一小部分具有开放性(如C#语言、通用语言基础构造CLI和Web服务标准),但至少目前很难想象会有一个非微软的.NET实现。Visual Stdio.NET是其唯一的开发工具。
7).开源支持比较
J2EE开源产品众多,免费框架居多,相应的最佳实践设计模式层出不穷。而.NET无开源社区支持,是以框架开发者为主导的设计。
8).学习成本比较
J2EE门槛较高,由于多且杂,需要开发人员花费很长时间才能熟悉整个体系。而.NET门槛较低,使用方便,学习成本较低。但是,对于开发人员来说,.NET在系统整体架构的设计方面不如J2EE易于把握。
综合对比分析如下:
|
JEE |
.NET |
体系结构 |
JEE基于JVM虚拟机实现,跨多个平台(UNIX,LINUX,WINDOWS,SALORIES等) 胖客户端:AWT、SWING等 目录服务:JNDI 数据访问:JDBC 异步消息:JMS 表现层:Servlet,JSP 中间层:EJB,JavaBean 事务处理:JTS |
基于CLR虚拟机实现,跨语言(C#,VB.net, COBOL等) 胖客户端:Windows Forms
目录服务:ADSL 异步消息:Microsoft Message Queue 表现层:ASP.net 中间层:COM,COM+ 事务处理:DTC |
移植性 |
跨平台(UNIX、LINUX、Windows、各种国产操作系统等) |
仅仅Windows下,支持跨编程语言(C#,VB.net等) |
性能 |
JAVA支持硬件扩展方案进行性能瓶颈处理; 各种开源性能方案层出不穷 |
.net单个服务有最大cpu数量的限制,硬件扩展不能很好解决性能瓶颈 |
安全性、稳定性 |
可以部署在多中操作系统中,安全性天生比.net强。应用服务器有多种(weblgoic、websphere、jboss,tomcat、glassfish、oc4j、东方通、Apusic等)安全性和成本都可以很好控制。 |
Windows本身的安全漏洞,造成安全性比java差。仅有IIS,安全性和稳定没法保证 |
可扩展性 |
JEE平台的扩展思想则是基于硬件的纵向扩展; 单机支持64-256个处理器(没有限制) |
.NET平台的扩展思想是基于软件的横向扩展 单机支持的比java少 |
第三方支持 |
JEE作为一种开放的规范,得到了众多厂商支持,如:IBM、HP、Oracle、Facebook、RedHat、亚马逊、阿里巴巴等 |
仅微软 |
开源支持 |
开源产品众多,免费框架居多,最佳设计模式层出不穷 |
无开源社区,仅微软设计支持 |
学习成本 |
门槛高,技术知识多且杂 |
门槛低,入门简单,学习成本低 |
安全可控 |
支持跨平台迁移,可以做到安全可控(支持各种国产CPU、国产中间件、国产数据库) |
仅微软支持,不能实现安全可控(不支持国产cpu、数据库、中间件等) |
由于智慧校园和大型电子政务系统用户量大、项目复杂、难度高,因此几乎都是选择J2EE平台,因为这都需要有良好的性能,可以支持大并发,可以跨平台进行部署,能很好地进行安全可控,能够在国产的各种硬件平台上良好运行,支持国产的数据库、中间件、操作系统等。
综上,从安全可控、移植性、扩展性、性能等方面考量,大型系统首选推荐采用J2EE平台架构。