我不得不将几个遗留应用程序和服务合并到一个网络分布式应用程序中。现有的服务和应用程序使用不同的语言和技术编写,包括: java、C#.Net和C++;所有这些服务和应用程序都运行在machines机器上。现在我想知道他们之间的沟通机制。什么是简单和标准的方式?谢谢!PS。通信包括简单的消息发送和远程方法调用。
发布于 2011-10-20 11:56:03
不幸的是,没有所谓的“标准解决方案”,所以您必须弄清楚您的需求是什么,并从中选择最适合的选择。
这里有几个选择。
对于网络应用程序集成透视图,http上的SOAP可能是找到创建集成的最佳方法(辛苦但透明)。
windows平台本身也提供了不同的集成方法。Windows进程到windows进程通信可能解决bij (D)COM或命名管道(如果在同一台计算机上),甚至RPC也可能解决您的需求。
对于您的java应用程序,您可以使用JNDI创建c++应用程序的本地集成,从那里您甚至可以访问(D)COM,因此有很多选项。
发布于 2011-10-20 13:05:34
如果你能负担得起,BizTalk就是直接针对这类问题的。它有一个一致的编程模型,因此如果您可以为每个孤立的系统创建一个BizTalk适配器,那么您可以创建BizTalk编排来控制所有这些系统之间的信息流。在我的经验中,它也很有表现力。
发布于 2011-11-15 15:26:15
您可以尝试使用ZeroMQ,这是一个用于网络通信的现代开源库,它绑定了C++、.NET、Java和大多数您可以想到的语言。
来自ZeroMQ登陆页面:
The socket library that acts as a concurrency framework.
Ø Faster than TCP, for clustered products and supercomputing.
Ø Carries messages across inproc, IPC, TCP, and multicast.
Ø Connect N-to-N via fanout, pubsub, pipeline, request-reply.
Ø Asynch I/O for scalable multicore message-passing apps.
Ø Large and active open source community.
Ø 30+ languages including C, C++, Java, .NET, Python.
Ø Most OSes including Linux, Windows, OS X.
Ø LGPL free software with full commercial support from iMatix.ZeroMQ没有指定您的消息的格式,所以您可以使用您喜欢的任何序列化,尽管您希望使用与.NET/Java/C++兼容的类型。
https://softwareengineering.stackexchange.com/questions/115271
复制相似问题