使用Thrift或Protocol Buffers实现双向通信

5

很抱歉我的英语不好。

是否可以构建两个应用程序,实现进程之间的双向通信?

我知道有两个“框架”可以在不同的进程(使用不同的编程语言)之间进行通信:Thrift和Protocol Buffers。

我知道Thrift以客户端/服务器模式工作,因此如果我想要双向通信,我需要同时构建两个进程/方向,就像客户端和服务器一样。

客户端/服务器 <-------------------------> 客户端/服务器

我不确定这种方法是否正确。

但是,我找不到使用Protocol Buffers实现双向通信的信息。这是否可能?

我有一个C ++进程和一个Node.js(Javascript)应用程序.. C ++进程向Node.js应用程序发送通知(这很好,我使用Thrift测试)。在另一侧,用户与Node.js应用程序交互..在某些事件中,node.js应用程序需要通知C ++进程..因此我需要双向通信..

有什么建议吗?

提前致谢


1
在面向传输的网络的最低层,你总是有一个客户端和一个服务器,因为服务器是listen()和accept()的一方,而客户端是connect()的一方,但在此之后通信中就没有进一步的不对称性了。如果两个进程坐在同一台机器上,你可以使用管道。 - Kerrek SB
在低级别中,我们总是有客户端/服务器..但在高级别实现中,想法是只看到或使用一个通道...我试图实现这一点。 - matiasfha
1
好的,一旦您建立了连接,图片就相当对称了。双方都可以平等地发送和接收。 - Kerrek SB
@Kerrek SB:这并不完全正确。两个程序都可以调用bind,然后每个程序同时调用connect。这将导致使用同时的SYN交换方法创建TCP连接。 - Omnifarious
@Omnifarious:非常有趣。为什么不把它发表为答案呢?这是可行的方法吗? - Kerrek SB
@Kerrek SB:不管连接是通过监听/连接方式还是同时进行SYN交换方式启动,与之后使用Thrift或Protocol Buffers的操作无关。只有在极少数特殊情况下,使同时进行SYN交换的工作变得值得。对于这个问题的答案...真的很复杂,并且很难在StackOverflow的回答中详细解释这个材料。 - Omnifarious
1个回答

3
此帖子提供了一些Thrift的选项 - Thrift异步函数中的回调? msdark的问题实际上是关于双向事件信令而不仅仅是双向数据传输。使用Thrift或ProtoBufs可以在两个方向上传输数据。从根本上讲,任何IPC都必须双向传输数据 - RPC调用和返回值。异步客户端到服务器事件信令是使用RPC构建的,但异步服务器到客户端需要更多的工作。在这方面已经有了一些工作。 在Google搜索“thrift async”中排名前两位的结果是很好的阅读材料。 Thrift:双向异步RPC

等等...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接