这是一个关于软件设计的普遍“noob”问题,所以如果看起来模糊不清,我很抱歉,但我真的很感谢这个建议。注意下面描述的系统纯粹是一个例子,而不是我想到的特定产品。使用IPC结合多种语言
我经常需要结合使用不同语言编写的几个库或实用程序的功能。例如,如果我想为桌面编写高性能音频处理应用程序,我会用C/C++编写它。然后,我想添加一个不错的GUI。但我不想学习Qt。我喜欢Adobe Air的外观和风格,并且愿意使用它。后来,我需要访问USB设备。但是,我只有在Java库中有一个API。我如何将所有这些元素结合在一起,以利用它们的相对优势?
显然,我不能将这些不同的元素编译成一个单一的可执行文件。所以我需要单独创建和运行它们,并给它们一种沟通的手段。最常见的做法似乎是使用IPC(进程间通信),例如共享内存或套接字。我更喜欢套接字的想法,因为这些程序可能会在网络上的独立机器上运行。
因此,我决定创建一个本地客户端/服务器系统,使用自定义API来允许这些元素进行通信。例如,Air应用程序将收到来自C应用程序的消息,告诉它更新它的UI。以Java运行的USB应用程序将使用套接字将音频从USB硬件传输到C应用程序中。
我的问题:用这种方式使用本地套接字是设计这样一个系统的典型方式吗? 性能是否会比真正的本机应用程序差得多(例如,Java或C中的所有内容都在单个可执行文件中)?这种方法似乎很可能会出现错误,难以维护?
我经常发现自己遇到了现有软件库的限制(例如,图形库具有漂亮灵活的用户界面,但无法访问底层硬件,或者可以混合多种音频流的媒体库,但不支持视频播放),并发现它非常令人沮丧。如果任何人可以建议这样的任意软件库的最佳方式,我会很感激。
在此先感谢!
这两个很好的答案,但这一个是eas更加明白。 我的许多工作都需要C/C++,我认为将Qt作为我的“平台”可能是安全的。 – darasan 2012-08-03 07:42:05