金融领域的资产和财富通过数据以数字表现。此前介绍了数据仓库(Data Warehouse)和数据库(Database)管理(DBA)与运行数据库的操作系统UNIX平台以及信息安全(Information Security)。然而,IT开发领域Java与.NET学哪样好,是开发人员经常遇到的两难问题。软件测试(QA)人员一直是IT企业抢手的人才,成为重点培养的对象。微软为扭转其在企业市场上的低端形象,推出了新一代企业级应用平台Microsoft SQL Server 、Visual Studio及BizTalk Sever等产品。向IBM、Oracle长期霸占的企业高端市场展开争夺、引起了在高端企业市场新一轮争斗。
无论程序员、软件开发商、公司IT经理一直都在密切的关注着J2EE和.NET的发展,但是选择一个在性能,价格,时间上满足需求的平台却并不是一件简单的事情。在表现形式上,J2EE是一组规范,而.NET更象是一组产品。但目的都是为了公司应用提供分布式的,高可靠性的解决方案。两种平台主流的开发语言Java和.NET在架构上有着惊人的相似之处。这里在技术上对J2EE和.NET做一个简单的比较,希望对于IT人做选择时有所帮助。
一种语言vs多种语言,一个平台vs多个平台。这似乎是大家最喜于津津乐道的话题,也似乎是所有问题的焦点。
J2EE平台的构成
1.EJB – J2EE 中间层,完成商业逻辑;
2.JAAS – J2EE 处理认证和授权的API;
3.Java Connectors – J2EE 用于连接异种数据源的API,对上层来讲是透明的;
4.JSP, Java Servlets – J2EE的表示层技术,用于生成用户界面;
5.Java Virtual Machine – Java 语言运行环境;
6.JDBC – J2EE数据库访问;
7.JMS – J2EE的异步消息队列;
8.JNDI – J2EE的名字查找API,独立于目录服务器;
9.JTS – J2EE用于处理交易的API;
10.RMI/IIOP – J2EE的分布式对象的通讯API,提供了和CORBA交互的能力。
跨平台是J2EE的最大特点,也是至今为止还绊住微软的栅栏。当开发商完成了符合J2EE规范的软件时,其客户可以依据其喜好和实力来选择不同应用服务器。从基于open source的免费软件到高端满足B2B需求的商业套件来搭建自己的平台。但是由于J2EE的规范还不完善,各个J2EE服务器的提供商为了使其提供其各自理解的完整的功能,不得不添加一些额外的特性。这就使得使用了这些特别功能的应用软件,绑定到了特定的应用服务器上。随着J2EE规范的发展,这种差别会逐渐减小。
.NET平台构成
1..NET Framework – .NET应用运行的基础;
2.IL (Intermediary Language) – 所有的.NET语言首先被编译成该中间语言,然后在CLR中运行;
3.SOAP – 用于服务访问的工业标准;
4.DCOM – 组件间通信协议;
5.MS-DTC – 用来在.NET平台上使用两阶段提交协议来处理分布式交易;
6.CLR – .NET应用的运行时环境;
7.COM+ – .NET的中间层模型,用于构建商务逻辑;
8.ADO.NET – .NET 对数据访问的API。
9.此外.NET平台还包括其他一些产品象Application Center Server,BizTalk Server ,NLBS (Network Load Balancing Service),Commerce Server,Enterprise Servers,HIS (Host Integration Server),ISAS (Internet Security and Acceleration Server)用来提供象防火墙,安全访问,B2B交易,负载平衡等服务.J2EE规范本身没有定义这些服务,但可通过选择第三方产品来满足类似的要求。
微软的跨平台解决方案是Web services,它解决的是异种平台上不同应用之间的连通性问题。从技术角度讲,它除了以XML为介质之外没有什么新意。但它的重要意义在于:它是微软这样一个重量级选手所推出的,前景不容小视。正如我们所讨论的:Web services解决的是异构平台上服务连通性的问题,但在现实中所更迫切需要的是如何在异构的平台上构造具有可扩展性,高可靠性,高可用性,故障冗余,错误恢复能力的企业应用。缺少这一点,从结构上讲,.NET平台还未尽人意。
在微软的.NET平台中,旧的COM和COM+的组件模型被新的组件模型所代替。增加了象基于沙箱的安全模型和垃圾回收等功能。并且实现了多重接口继承,扩展的元数据和新的代理模型等。旧有的COM和COM+组件也可被映射到新的运行环境中。
综上所述,两者架构在基于组件的中间层的设计上各有千秋,对于创建分布式的,复杂的,高效的,高可靠性的的应用程序都有着足够的能力。大体上,两种架构所使用的表示层的技术非常类似,虽在细节上各有所长,但总体功能当在伯仲之间。
J2EE和.Net以不同的形式支持数据的访问。JDBC和ADO一样和所连接的数据库无关,并且通过连接,命令语句和结果集来对数据进行操作。所以属于中间层次的API。更高一级的数据封装和数据管理是通过实体EJB (entity EJB)来完成的。基于容器管理的实体EJB使开发更快捷,管理更方便。事实上,由于实体EJB的load()和store()方法的同步机制,将大大缓解因并发而使数据库产生的瓶颈。
而微软的.NET的数据访问工具则由基于XML的ADO.NET代替了基于COM组件的ADO。任何以XML为输出的数据源都可以作为ADO.NET的数据源。相应的结果集升级为数据集(DataSets),命令语句则升级为数据集命令(DataSet Commands)。
从形式来看,微软的ADO.NET更新潮和时髦一些,基于XML的特性使其可以处理极其丰富的数据源,并且,因其构架在HTTP协议之上,易于穿透防火墙,使沟通更为便利。但由于XML本身的基于标记的特性,很明显限制了在有超大数据量和有网络瓶颈的应用中的使用。而J2EE的数据访问规则则显得略有单薄,但同时却更简单,更有效。并且通过对应用程序有效的层次的设计,对于数据库和基于XML的数据源的访问,也是可以无缝的整合的。
开发人员能够利用这些丰富的客户端和服务器端框架轻松构建以客户为中心的Web应用程序,这些应用程序可以集成任何后端数据提供程序、在任何当前浏览器内运行并完全访问ASP.NET应用程序服务和Microsoft平台。.NET Framework提供了用于解决常见编程任务的构建基块(预制的软件),从而能够快速构造具有出色的最终用户体验的紧密联系的应用程序。在.NET Framework模型业务流程上有效构建的紧密联系的应用程序有利于在异类环境中实现系统集成。
微软确实提供了从桌面的办公软件,开发工具,到后台服务器数据库的全方位的产品。但统一平台的使用者可能要牺牲跨平台的好处,并也有可能由此就被无穷无尽的锁定在微软的许可证的汪洋中。更简单,更快捷,更高效是微软的目标,随着时代的发展,也许会看到更完美的技术解决方案。因此,JAVA和.NET工作职位的选择,是仁者见仁,智者见智。
微软不断出现的新技术和产品是否给微软技术的开发者们带来了学习上的难度,如何联系已有技术学习新技术的。目前38%的IT从业人员靠微软及其合作伙伴所组成的生态系统生存。而无论是产品的版本升级还是不断出新,微软迈在技术前沿的脚步向来矫健。微软.NET技术的开发者如何从中把握技术方向、如何选择并面对不断出现的新技术。
一般来说,微软.NET技术入门还是很容易的,学习难度不大,但要深入还是需要一定的技术功底。在工作中需要使用新技术来提高开发效率,其间也了解一些新的技术趋势和设计思想。微软一直在打造一个易用的开发平台,比如C#,VB.net语言的增进,类库的增加,开发工具的更新,让程序员使用越来越方便。
微软的技术主要是基于平台的优势,开发工具方面拥有一个优秀的IDE,从VC/VB的时代到.NET Framework1.0/2.0/3.5,微软一直在进步,很多软件公司都基于微软平台做应用软件开发。对于新技术,先要了解一下概要和它有哪些优势,什么场景可以用到这些技术。再次,还要思考为什么要选择新的技术,使用新技术会有多大的成本和风险,如果要使用这种新技术做产品或项目,接下来就要详细看文档,Demo和Sample Code,并结合实际场景应用。目前各种新技术太多,要根据工作需要和兴趣学习新东西。
微软.NET技术的开发者应当采取泛泛了解,用得上才深入的原则。了解是对包括非微软技术在内的各类技术的了解,拓宽知识面。目前新技术太多,语言,开发工具,数据库版本更新越来越频繁,开发人员可以根据自己的工作需要来学习新技术。通常来讲,一个优秀的开发人员应保持对新技术的感知和应用能力,除非不希望自己进步。一般来说每天要用二个小时时间上网学习新的东西,以此来保持对新技术的把握能力。
微软平台的技术越来越多,如WCF, WPF, SliverLight之类,由一种技术过渡到另一种技术或者由一个平台转向另一个平台。六年前,是用VB/VC和ASP写程序,开发一些管理软件和网站应用,那时正是Internet流行的时候。2002年开始转到.NET平台,因为OO思想和算法不错,但需要时间熟悉.NET类库,看懂文档和示例代码。如果用C#开发ASP.net程序,有C++/VB/VC基础,就会觉得很容易就过度到.NET平台。一般来说,有一定的开发经历和语言基础,过度并不难,况且微软平台的很多产品是互相联系的。
往往微软重量级产品更新速度并不快,比如Office,Visual Studio,基本上都是两三年发布一个版本,这段时间正是一个产品的商业周期,太快和太慢对微软,对用户都是不利的。对开发人员来说,一个新版本一般是不需要太多时间培训学习的。比如用VS 2008,你完全可以使用Framework 2.0,不用Framework 3.5。如果要使用新的特性,用起来也不难。现在使用VS 2008,会感觉比以前任何版本的开发工具都好用。
微软在Vista操作系统上的用心良苦再次证明了IT技术的日新月异,不进则退。而今,微软.Net也已走出了其平台、技术只能适合于中小企业的阴影。微软.Net入门容易、易学易用、快速善变,近几年取得了惊人的发展,众多企业纷纷采用.Net作为企业应用开发的技术和平台。正是由于其无可比拟的优越性,NET把自己定位为可以作为平台支持下一代互联网的可编程结构。微软的构想是不再关注单个网站、单个设备与因特网相连的互联网环境,而是要让所有的计算机群、相关设备和服务商协同工作的网络计算环境。
微软.NET的最终目的就是让用户在任何地方、在任何时间、在任何设备上都能访问所需要的信息、文件和程序,而不需要知道具体细节。所以对于企业的IT人员来说,不需要管理复杂的平台以及各种分布应用之间的工作是如何协调的,微软已经找到了在互联网上占据优势地位的道路。微软正通过.NET为我们展示一个由无数可协同运行的Web应用所构成的互联网,这些Web应用都来自全球服务交换网络。从微软2002年推出跨时代的.NET平台, 到如今微软Vista 这个全新的操作系统,IT行业已经掀起了翻天覆地的变革。
如果你想进入微软解决方案的领域,.NET 无疑是最好的切入点。随着一些大型企业将应用平台迁移到.Net, 北美市场上对.Net技术开发人员的需求进入了一个新的高潮时期,据预测,.Net的强劲发展刚刚到来,仍然处于发展阶段。当然,我们也应该看到作为发展初期的.Net开发人员,则不仅要求具有良好的.Net基础知识,更要求掌握全面的、高深的.NET专用技术,以适应大中企业级应用开发。