【发布时间】:2011-09-12 10:40:06
【问题描述】:
我有一个 Java 应用程序和一个 .NET 应用程序都驻留在两台不同的机器上,需要在这两个应用程序之间设计一个通信层。任何输入或想法都会非常有帮助。下面提到的是这两个应用程序之间交互的性质。
- Java 应用程序向 .NET 应用程序发送大量数据
- 应将数据延迟降至最低
- .NET 应用程序也应该能够请求一些数据(同步/异步)
【问题讨论】:
-
@Yedhu:你为什么不试试网络服务?
我有一个 Java 应用程序和一个 .NET 应用程序都驻留在两台不同的机器上,需要在这两个应用程序之间设计一个通信层。任何输入或想法都会非常有帮助。下面提到的是这两个应用程序之间交互的性质。
【问题讨论】:
.Net 和 Java 对话的最简单方式是使用 Web 服务——我们在我的公司中取得了很大的成功(在 .Net 端使用 apache 的 cxf 和标准代码)。
但如果延迟和大小是主要要求,您应该使用套接字 - 两个平台都提供了相当广泛的套接字框架,它可以为您提供最佳性能。
【讨论】:
我认为这可以通过在 java 端设置一个 xml webservices 层来完成。您可以将 RestEasy 用于宁静的 Web 服务。只是我的 0.2 美分。
【讨论】:
另一种选择是某种形式的 MOM(面向消息的中间件)。有很多实现,但首先要查看的是 ActiveMQ,因为它同时具有 Java 和 C# 绑定(以及其他)。
我并不是说这比使用网络服务更好,这完全取决于您的要求。
【讨论】:
我们在使用 JAX-WS(Java 6 中标准运行时的一部分)提供 Web 服务方面有很好的经验。他们明确将 .NET 兼容性列为目标,并在 IDE 中得到很好的支持。
Endpoint.publish() 机制允许进行小型、简单的部署。
【讨论】:
您可以使用网络服务。 Jax-WS 是 java 中允许您使用它的 API。作为这个 API 的实现,我推荐 Metro (http://metro.java.net/),它已经随 SDK 一起提供,并且与 netbeans 有很好的集成。
正如已经有人提到的那样,您可以使用套接字,并在其上创建一个通信通道,但这有一些问题,首先是安全性。不要在现实生活中使用它。
如果您需要有关此主题的帮助,可以开始阅读以下内容: Getting started with JAX-WS
【讨论】:
这真的取决于您的要求。简单的方式一般是Web services。但是,如果您想要更高的性能,或者更细粒度地访问其他平台上的 API,您可能需要考虑 JNBridgePro (www.jnbridge.com)。
披露:我为 JNBridge 工作。
【讨论】: