65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.54/5 (9投票s)

2007年12月30日

CPOL

7分钟阅读

viewsIcon

54264

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

引言

本文将比较 J2EE 和 .Net 技术。我们将探讨互操作性场景和可用选项。此外,本文是为 .Net 开发人员撰写的,他们已经掌握了高级 .Net 知识,并且对 J2EE 的了解很少或几乎没有。

互操作性概述

“互操作性:在用户几乎或完全不需要了解各功能单元的独特特性即可进行通信、执行程序或传输数据等的能力。”
— ISO/IEC 2382 信息技术词汇

许多企业一直在基于混合环境(即 J2EE 和/或 .Net)进行构建。如果公司看到为其当前企业构建新应用程序的需求,首先会考虑重用和/或将新应用程序与现有应用程序和系统集成。与合作伙伴和供应商集成系统是企业日益增长的另一个需求,其中安全、性能和可扩展性是标准要求。

在大多数情况下,迁移、重建或复制功能是不可能的。即使我们决定将应用程序迁移到其他平台,大多数时候迁移也必须分阶段进行,并与其他平台集成,直到完成系统迁移。

互操作性允许核心系统与内部和外部应用程序(包括合作伙伴和供应商)进行通信。在设计互操作性解决方案时,应考虑性能开销、安全性和功能性降低。

在接下来的部分中,我们将探讨以下主题

  1. 互操作性场景和技术映射
  2. 互操作性技术
  3. .NET 开发人员的 J2EE
  4. .Net 与 J2EE 功能映射
  5. 使用 XML 进行互操作
  6. 摘要

互操作性场景和技术映射

以下是在企业中常见的互操作性场景

  1. .Net 表示层与 J2EE 业务层
  2. J2EE 表示层与 .Net 业务层
  3. .Net 业务层与 J2EE 业务层
  4. 在 .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 之间还有其他差异,也应予以理解。差异可分为三个主要区域

  1. 操作系统
  2. 语言支持
  3. 执行流程或技术

众所周知,.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)在企业中变得越来越重要和成熟。这些技术将提供更具可扩展性和可扩展性的架构,使互操作性更加轻松和无缝。

© . All rights reserved.