2009-10-02 70 views
1

我在这里有一个相当普遍的问题之间的通信。对于在同一台机器上运行的两个应用程序彼此进行通信而无需使用任何类型的Web服务或Web服务器,最好的+可靠的方式是什么?应用程序(.NET + JAVA)

为例如:

应用程序A:在与Active X控件可以访问另一个第三方应用和接收数据的.NET应用程序运行。

应用B:(让我们假设正在运行的Java)希望能够启动应用程序A的方法,具体的参数和应用A.收到信息反馈(无网络服务允许)

我唯一可以想到的可能是应用程序B执行具有某些参数的文件...然后应用程序A执行任何操作并将任何返回信息写入数据库中......但我不知道这是多么可靠......或者应用程序A会知道数据何时写入数据库。 (加上这听起来像一个有点hackish的解决me..and想知道的是有什么更好的在那里)

好吗...感谢您的帮助!..

安德鲁

+0

Web服务并不真正涉及使用一个Web服务器。一个web服务的行为就像一个,但这只是通信的工作原理。你甚至可以有一个小的html界面记录你的web服务。是否有任何特定原因不想使用Web服务? – 2009-10-03 01:51:26

+0

我不想处理IIS ......有3个工作方面的问题,特别是当从32位系统改为64位系统时。 – Andrew 2009-10-03 03:20:16

+0

(我应该说我总是假设web服务=使用web服务器/ HTTP协议) – Andrew 2009-10-03 03:21:45

回答

3

使用tcp套接字应该非常可靠,在同一台机器上更是如此。它不需要Web服务,Web服务器等 - 只需要在每边都有一个套接字。

+0

谢谢!...如果你不介意你能否详细说明一下,tcp套接字可以堆叠到web服务上吗? – Andrew 2009-10-02 23:57:40

+0

Adam Frisby指出,有xmlrpc和soap库可以在不需要Web服务器的情况下构建进程间通信。 – 2009-10-03 00:02:12

+0

如果可能的话,再澄清一下:通过使用xmlrpc和soap库,你是否意味着将我的数据序列化为“SOAP形式”...使用套接字发送它......然后在另一端反序列化它......有什么我在这里失踪? – Andrew 2009-10-03 01:38:42

1

套接字将是相当容易安装;但是我建议寻找更类似于SOAP或XMLRPC的东西 - 在打包和解包数据时,这两方面都会更容易。 .NET和Java都为XMLRPC和SOAP(提供者和消费者)提供了广泛的访问和库。

+0

谢谢,..只是为了澄清: 当你说使用肥皂你只是意味着序列化我的数据到一个SOAP对象...发送它使用套接字....然后反序列化它发送时? 因此,我仍然会使用套接字?只使用SOAP作为我的“通信语言”......如果我在这里没有意义,请毫不犹豫地打我一下 – Andrew 2009-10-03 01:31:46

+0

Web服务通常绑定到tcp套接字,但不一定。 SOAP只是用于与Web服务对话的通信协议。而你的用户对象确实被序列化成适合SOAP包的东西。 – 2009-10-03 01:38:33

0

至于执行方面,TCP套接字和Web服务是一样容易建立在任何一方(客户端 - 服务器)。

当性能是一个考虑因素,TCP套接字将有upperhand因为有更少的开销。

但是,当涉及到使用性和易于集成的代码,我更喜欢的网络服务。说实话,它是一个更透明的技术,当涉及到调试你的代码。对应的套接字在可用之前需要更多的管道代码。

看看这个article对通过Web服务在.NET和Java互通的详细信息。