As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center作为指导。
7年前关闭。
现状
对于我的项目,我需要一个客户端库,该客户端库可与每个主要编程平台的API进行通信。目前,我只实现了一种(Java),并在考虑“我不想这样做8次(或希望别人这样做)”。
客户相对较小,但并不琐碎;主要执行JSON读取/写入以及通过SSL发送TCP / UDP数据。对客户端的每次调用都是一劳永逸的,因此它完全在其自己的线程中异步工作。
问题
我在问自己,编写单个C库并将其与其他平台集成是否有意义。
我做了一些研究,似乎每个平台都以不同的方式(显然)以不同的必要努力来处理此问题。我还意识到,我从未见过类似的东西-例如,数据库驱动程序似乎总是从头开始编写,而不是在核心使用C库。开销太大了吗?
我还阅读了有关Thrift,协议缓冲区等的信息-但这似乎是针对网络互操作性的?
题
所以最后一个问题是:
在每个平台客户端的核心使用单个C库是否可行?如果是,应该怎么做?
7年前关闭。
现状
对于我的项目,我需要一个客户端库,该客户端库可与每个主要编程平台的API进行通信。目前,我只实现了一种(Java),并在考虑“我不想这样做8次(或希望别人这样做)”。
客户相对较小,但并不琐碎;主要执行JSON读取/写入以及通过SSL发送TCP / UDP数据。对客户端的每次调用都是一劳永逸的,因此它完全在其自己的线程中异步工作。
问题
我在问自己,编写单个C库并将其与其他平台集成是否有意义。
我做了一些研究,似乎每个平台都以不同的方式(显然)以不同的必要努力来处理此问题。我还意识到,我从未见过类似的东西-例如,数据库驱动程序似乎总是从头开始编写,而不是在核心使用C库。开销太大了吗?
我还阅读了有关Thrift,协议缓冲区等的信息-但这似乎是针对网络互操作性的?
题
所以最后一个问题是:
在每个平台客户端的核心使用单个C库是否可行?如果是,应该怎么做?
最佳答案
如果要将相同功能的所有实现整合到一段代码中,使用C库是有意义的-它可能是高级语言可以通用的唯一语言。
如果可以在一定程度上实现流程自动化,那么您的工作将大大简化。您可能想看看SWIG。它是一个绑定生成器,它允许C / C ++代码与许多其他编程语言一起使用,包括您提到的大多数(即使不是全部)语言。
就我的肤浅经验而言,SWIG做得相当不错,尽管生成的代码有时确实需要一些调整...
10-06 12:29