.NET 与 J2EE 互操作性:面向 .NET 开发人员






4.54/5 (9投票s)
.NET 与 J2EE 互操作性:面向 .NET 开发人员
引言
本文将比较 J2EE 和 .Net 技术。我们将探讨互操作性场景和可用选项。此外,本文是为 .Net 开发人员撰写的,他们已经掌握了高级 .Net 知识,并且对 J2EE 的了解很少或几乎没有。
互操作性概述
“互操作性:在用户几乎或完全不需要了解各功能单元的独特特性即可进行通信、执行程序或传输数据等的能力。”
— ISO/IEC 2382 信息技术词汇
许多企业一直在基于混合环境(即 J2EE 和/或 .Net)进行构建。如果公司看到为其当前企业构建新应用程序的需求,首先会考虑重用和/或将新应用程序与现有应用程序和系统集成。与合作伙伴和供应商集成系统是企业日益增长的另一个需求,其中安全、性能和可扩展性是标准要求。
在大多数情况下,迁移、重建或复制功能是不可能的。即使我们决定将应用程序迁移到其他平台,大多数时候迁移也必须分阶段进行,并与其他平台集成,直到完成系统迁移。
互操作性允许核心系统与内部和外部应用程序(包括合作伙伴和供应商)进行通信。在设计互操作性解决方案时,应考虑性能开销、安全性和功能性降低。
在接下来的部分中,我们将探讨以下主题
-
互操作性场景和技术映射
-
互操作性技术
-
.NET 开发人员的 J2EE
-
.Net 与 J2EE 功能映射
-
使用 XML 进行互操作
-
摘要
互操作性场景和技术映射
以下是在企业中常见的互操作性场景
-
.Net 表示层与 J2EE 业务层
-
J2EE 表示层与 .Net 业务层
-
.Net 业务层与 J2EE 业务层
-
在 .Net 和 J2EE 之间共享资源
注意:以上是最常见的场景,但并非全部。例如,.Net 表示层和 J2EE 表示层之间也存在互操作的可能性。请参阅“互操作性技术”部分,了解场景与技术建议之间的映射。
以下图表映射了各个层,并展示了上述互操作性场景

.Net 表示层与 J2EE 业务层

J2EE 表示层与 .Net 业务层
互操作性技术
.Net 和 J2EE 互操作有多种技术。每种技术都有其优缺点。这也取决于您的功能和/或非功能性需求,例如性能或可扩展性。以下是我们可以用于 J2EE 和 .Net 之间互操作性的技术
-
XML Web 服务
-
运行时桥接
-
面向消息的中间件
-
共享数据库
-
集成代理
*请注意,以下是每种技术从互操作性角度进行的概览。有关更多信息,请使用适当的资源。
XML Web Services 已经成熟,并得到了 J2EE 和 .Net 的支持。Web Services 为与其他应用程序和系统通信提供了接口。但是,Web Services 隐藏了方法级别的实现,因此应用程序只能通过定义的接口和契约进行通信。Web Services 是表示层到业务层、业务层到业务层以及业务层到数据层互操作的绝佳选择。
使用 XML Web Services,您无法从 .Net 调用类方法或访问 J2EE 类,反之亦然。运行时桥接提供了访问一个平台到另一个平台的类的能力。运行时桥接由第三方开发,JNBridgePro 和 Ja.Net 是市场上最著名的。运行时桥接允许您使用 .Net Remoting 来处理 Java 端(J2EE)的类。
消息传递和共享数据库提供异步通信机制。消息传递基于 MSMQ 和 IBM MQSeries,两者都支持安全、消息记录和事务。使用共享数据库技术,一个公共数据库(SQL Server 或 Oracle 等)被 .Net 和 J2EE 应用程序访问。.Net 应用程序使用 ODBC,J2EE 应用程序使用 JDBC。
集成代理通常建立在消息传递框架的基础上,该框架提供了跨分布式应用程序和企业的业务流程的集成和自动化。集成代理是集成合作伙伴和供应商的良好解决方案。BizTalk Server、CommerceBroker 和 IBM MQSeries 是市场上最知名的集成代理。
下表显示了互操作性场景与技术之间的映射。这些建议来自 Microsoft,可能与您的问题和解决方案有所不同。
Web 服务 |
运行时桥接 |
消息传递 |
共享数据库 |
集成代理 |
|
表示层到表示层 |
X |
X |
|||
表示层到业务层 |
X |
X |
X |
||
业务层到业务层 |
X |
X |
X |
X |
|
业务层到数据层 |
X |
X |
X |
.NET 开发人员的 J2EE 概述
与 Microsoft .NET 不同,Java 2 Platform, Enterprise Edition(J2EE)是一组链接的规范,而不是一个产品。这些规范包含一系列可下载的 .PDF 文件,描述了应用程序协议以及这些应用程序运行的容器的组成。
Sun Microsystems 开发了 Java 作为一种平台和一门编程语言。
目前 Java 平台有三个版本
-
J2SE (Java 2 Standard Edition)
-
J2EE (Java 2 Enterprise Edition)
-
J2ME (Java 2 Micro Edition)
注意:“Java”一词通常指的是 J2SE 中提供的功能。涉及企业版(Enterprise Edition)的领域会使用 J2EE 这个术语。
有关 J2EE 历史的更多信息,请访问 http://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition#History
如前所述,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 规范实现,这些规范由 Sun Microsystems 构建。以下供应商实现了这些规范
-
Sun (Sun ONE Application Server)
-
IBM (WebSphere)
-
BEA (WebLogic)
-
JBoss (开源实现) https://jboss.com.cn/
J2EE 还包括过去十年发展起来的附加组件
-
Java Server Pages (JSP)
-
服务器端 API 或 Servlet
-
Enterprise Java Beans (EJB)
-
Java Naming and Directory Interface (JNDI)
-
Java Message Service (JMS)
-
Java API for XML-based RPC (JAX-RPC)
-
J2EE Connector Architecture
-
J2EE Management Model
-
J2EE Deployment API
-
Java Management Extensions (JMX)
-
J2EE Authorization Contract for Containers
-
Java API for XML Registries (JAXR)
-
Java Transaction API (JTA)
-
Common Object Request Broker Architecture (CORBA)
-
JDBC 数据访问 API
您可以将 J2EE 的一些组件映射到 .Net 中,例如,JMS 等同于 System.Messaging 命名空间。
.Net 与 J2EE 功能映射
下表有助于理解 J2EE 和 .Net 功能的比较。
功能 |
J2EE |
.NET |
技术类型 |
标准版 |
产品 |
中间件供应商 |
30+ |
Microsoft |
Interpreter |
JRE |
CLR |
动态 Web 页面 |
JSP |
ASP.NET |
中间层/服务器端组件 |
EJB |
.NET 托管组件 |
数据库访问 |
JDBC SQL/J |
ADO.NET |
SOAP、WSDL、UDDI |
是 |
是 |
隐式中间件 |
是 |
是 |
Web 应用托管 |
多个(取决于供应商实现) |
Internet Information Server |
目录访问 |
Java Naming and Directory Service (JNDI) 通过 LDAP |
Active Directory Services Interface (ADSI) 通过 LDAP |
远程调用 |
RMI-IIOP |
.NET 远程处理 |
消息传递 |
JMS |
Microsoft Message Queuing |
事务支持 |
JTA |
COM+/Distributed Transaction Controller (DTC) |
摘要
对于企业来说,完全基于 J2EE 或 .Net 技术构建系统是不可能或不合适的。一些组织已经使用 J2EE 或 .Net 平台构建了其核心系统,而互操作性是企业的持续需求。互操作性有不同的类型,例如表示层到业务层或业务层到业务层,并且有多种推荐技术适用于这些互操作性类型。过去十年,SOA 和 Enterprise Service Bus(ESB)在企业中变得越来越重要和成熟。这些技术将提供更具可扩展性和可扩展性的架构,使互操作性更加轻松和无缝。