0

现状

对于我的一个项目,我需要一个客户端库,它可以与我的每个主要编程平台的 API 进行通信。目前我只实现了一个(Java)并且在想'我不想这样做 8 次(或者希望其他人会这样做)'。

客户端比较小,但不小;主要通过 SSL 读取/写入和发送 TCP/UDP 数据。对客户端的每次调用都是一劳永逸的,因此它在自己的线程中完全异步工作。

问题

我在问自己编写一个 C 库并将其与其他平台集成是否有意义。

我做了一些研究,似乎每个平台都以不同的方式(显然)通过不同的必要努力来处理这个问题。我还意识到我从未见过类似的东西——例如,数据库驱动程序似乎总是从头开始编写,而不是在核心使用 C 库。开销是否太大?

我还阅读了有关 Thrift、Protocol Buffers 等的信息——但这似乎是针对网络互操作性的?

问题

所以最后一个问题是:

在每个平台客户端的核心使用单个 C 库是否可行?如果是:应该怎么做?

4

1 回答 1

2

如果您想将相同功能的所有实现整合到一段代码中,则使用 C 库是有意义的——它可能是唯一可以被高级语言普遍使用的语言。

如果你能在一定程度上自动化这个过程,你的工作会容易得多。您可能想看看SWIG。它是一个绑定生成器,允许 C/C++ 代码与大量其他编程语言一起使用,包括您提到的大多数(如果不是全部)语言。

对于我相当肤浅的体验,SWIG 做得相当不错,尽管生成的代码偶尔需要一些调整......

于 2012-12-26T01:34:45.827 回答