我有一个用C#编写的Windows,它调用一个用C语言编写的DLL。
数据在C# UI和C DLL之间使用通过pInvoke提供的封送处理技术进行交换。UI和DLL都是遗留代码。
所有的软件都运行在云上,特别是在Amazon (AWS)上。但是它可以移植到任何云服务提供商(Azure,Google等)。
我需要编写一个新的C代码("NewCode"),它运行在一个单独的AWS (或其他)实例上,除了从一个专有数据库读取数据和从现有DLL中读取服务数据请求之外,它什么也不做。
由于许多原因,这个NewCode需要在它自己的实例上运行,这样它就有了对内存、cpu和磁盘的独占访问。Newcode需要为各种数据请求提供服务:一个数字、一个字符字符串、一个数字数组、字符串数组等等。NewCode将是可移植的C,因此它可以在Linux、Unix等环境下运行。
我的问题是:
我有什么选择让现有的C DLL与NewCode通信?我知道这是一个过于宽泛的话题,不能要求列出选项和它们的相对优点,所以我想要的只是清单上应该列出的内容,这样我就可以开始研究了。我是这方面的新手,但到目前为止,我已经确定名单上应该有套接字和管道。名单上还应该有什么?
发布于 2014-12-26 21:39:52
由于NewCode将通过网络进行通信,所以我将研究协议缓冲区。协议缓冲区可能是在运行不同操作系统的不同机器上的进程之间进行通信的最有效方法。有许多不同语言的协议缓冲区实现,所有这些语言都使用相同的预定义结构定义。
当然,还有其他选项,如XML、JSON或您自己的二进制协议。
https://stackoverflow.com/questions/27662130
复制相似问题