最兼容的进程间通信协议

Posted

技术标签:

【中文标题】最兼容的进程间通信协议【英文标题】:Most Compatible Inter-Process Communication protocol 【发布时间】:2011-08-13 21:08:45 【问题描述】:

我正在开发一个媒体应用程序,我想为其提供一个外部 API 库,允许另一个应用程序与我的查询状态信息进行通信。我的应用程序是用 C# 编写的,API DLL 将是相同的。最初我的想法是简单地使用 WCF 和命名管道,因为它将提供一种非常简单的方法来编写整个接口。

但是,我意识到,如果我想为它制作一个 android 或 Web 遥控器,那么这样做几乎会阻止任何其他语言或平台与应用程序通信。

那么,我可以使用什么协议,既可以在我的 C# 代码中实现快速简单的接口,又可以在其他平台上编写 API。

基本要求是:

本地和远程通信 低开销 程序调用 文件传输(发送媒体) 预先存在的 C#,开源库会很好。

我看过很多选项,之前使用过 XML-RPC 和 JSON-RPC,但想知道社区认为什么是最佳选项。

【问题讨论】:

【参考方案1】:

我认为使用 WCF 是做你想做的事的最佳方式。它将易于维护,满足您的所有要求并且易于扩展。只是不要仅通过 net.pipe 限制对 API 的访问。我认为你应该使用 net.pipe、net.tcp 和基本的 http 作为主要绑定。我的意思是每个服务都有几个端点。因此,客户端应用程序,无论它是用什么语言编写的,都可以选择使用什么绑定来访问您的 API 服务器。

例如:

同一台机器上的 C# 客户端应用程序 - 使用 net.pipe Web 中的 php 客户端应用程序 - 使用基本 http 另一台机器上的 Java 客户端应用程序 - 使用 net.tcp

举个例子:

http://www.kevingao.net/wcf-java-interop/java-client-and-wcf-server.html

【讨论】:

以上是关于最兼容的进程间通信协议的主要内容,如果未能解决你的问题,请参考以下文章

基于TCP协议的进程间通信

基于UDP协议的进程间通信

VC++ 进程间的通信

Windows进程间通信—命名管道

socket

进程间通信各方法优劣