在当今的信息技术领域,企业级应用的构建往往需要在不同的技术平台间实现互操作性。互操作性是指不同的系统或组件能够相互通信、执行程序或传输数据的能力,而用户几乎不需要了解这些单位的独特特性。ISO/IEC 2382信息技术词汇中对互操作性的定义强调了这一点。
许多企业都在基于混合环境(如J2EE和/或.NET)构建系统。当企业需要在其当前企业中添加新应用程序时,首先考虑的是重用和/或将新应用程序与现有应用程序和系统集成。与合作伙伴和供应商的系统集成是企业日益增长的需求,其中安全性、性能和可扩展性是标准要求。
在大多数情况下,迁移、重建或复制功能是不可能的。即使决定将应用程序迁移到其他平台,大多数时候迁移也必须是分阶段的,并与其他平台集成,直到完成系统迁移。
互操作性允许核心系统与内部和外部应用程序(包括合作伙伴和供应商)进行通信。在设计互操作性解决方案时,应考虑性能开销、安全性和功能减少。
在企业中,常见的互操作性场景包括:
请注意,上述场景并非全部,例如还存在.NET表示层和J2EE表示层的互操作性可能性。请参阅“互操作性技术”部分,了解场景与技术推荐的映射。
.NET和J2EE互操作性有多种技术,每种技术都有其优缺点。这也取决于功能和/或非功能需求,例如性能或可扩展性。以下是可以用来实现J2EE和.NET之间互操作性的技术:
请注意,以下只是从互操作性角度对每种技术的高级概述。有关更多信息,请使用适当的资源。
XML Web服务已经成熟,并且得到J2EE和.NET的支持。Web服务提供了与其他应用程序和系统通信的接口。然而,Web服务隐藏了方法级别的实现,因此应用程序只能通过定义的接口和契约进行通信。Web服务是表示层到业务层、业务层到业务层以及业务层到数据层互操作性的良好选择。
使用XML Web服务,无法调用类方法或从.NET访问J2EE类,反之亦然。运行时桥接提供了从一个平台访问另一个平台的类的能力。运行时桥接由第三方开发,JNBridgePro和Ja.Net在市场上最为突出。运行时桥接允许使用.NET远程处理来处理Java端的类。
消息和共享数据库提供了异步通信机制。消息基于MSMQ和IBM MQSeries,两者都支持安全性、消息记录和事务。使用共享数据库技术,一个共同的数据库(如SQL Server或Oracle等)被.NET和J2EE应用程序访问。.NET应用程序使用ODBC,J2EE应用程序使用JDBC。
集成代理通常建立在消息框架上,提供跨分布式应用程序和企业的业务流程集成和自动化。集成代理是集成合作伙伴和供应商的好答案。BizTalk Server、CommerceBroker和IBM MQSeries是市场上最著名的集成代理。
与Microsoft .NET不同,Java 2平台,企业版或J2EE是一系列相关规范,而不是一个产品。这些规范由一系列可下载的.PDF文件组成,描述了应用程序协议和这些应用程序运行的容器的构成。
Sun Microsystems开发了Java平台和编程语言。目前有三种版本的Java平台:
J2EE是一系列规范,而不是像.NET那样的平台。J2EE和.NET之间还有其他差异,也应该理解。差异可以分为三个主要领域:
众所周知,.NET只能运行在Windows平台上,但Java旨在运行在多个平台上,即Windows、UNIX、Linux、MacOS和BeOS。
只能使用Java编程语言编写Java应用程序,但在.NET中,可以使用.NET支持的任何语言编写应用程序。
两个平台在应用程序运行时也存在很大差异。当基于.NET语言构建项目时,输出包括MSIL代码,JIT编译器在运行时编译。要部署Java程序,需要编译应用程序以创建Java字节码。然后目标操作系统上的JVM解释这个字节码以产生相关指令。
请注意,还有一些Java JIT编译器,它们的工作方式与.NET Framework组件类似。
功能 | J2EE | .NET |
---|---|---|
技术类型 | 标准 | 产品 |
中间件供应商 | 30+ | Microsoft |
解释器 | JRE | CLR |
动态Web页面 | JSP | ASP.NET |
中间层/服务器端组件 | EJB | .NET托管组件 |
数据库访问 | JDBC SQL/J | ADO.NET |
SOAP, WSDL, UDDI | 是 | 是 |
隐式中间件(负载均衡等) | 是 | 是 |
Web应用程序托管 | 多个(取决于供应商实现) | Internet信息服务 |
目录访问 | 通过LDAP的Java命名和目录服务(JNDI) | 通过LDAP的活动目录服务接口(ADSI) |
远程调用 | RMI-IIOP | .NET远程处理 |
消息传递 | JMS | Microsoft消息队列 |
事务支持 | JTA | COM+/分布式事务控制器(DTC) |