0

現状

私のプロジェクトでは、すべての主要なプログラミング プラットフォームの API と通信するクライアント ライブラリが必要です。現在、私は 1 つだけ (Java) を実装し、「これを 8 回実行したくない (または他の誰かが実行することを望んでいる)」と考えていました。

クライアントは比較的小さいですが、自明ではありません。ほとんどの場合、JSON の読み取り/書き込みと、SSL を介した TCP/UDP データの送信を行います。クライアントへのすべての呼び出しは、ファイア アンド フォーゲットであるため、独自のスレッドで完全に非同期に動作します。

問題

単一の C ライブラリを作成し、それを他のプラットフォームと統合することに意味があるかどうかを自問していました。

私は少し調査を行いましたが、すべてのプラットフォームがこれを (明らかに) さまざまな必要な努力で異なる方法で処理しているようです。また、そのようなものを見たことがないことにも気付きました。たとえば、データベース ドライバは、コアで C ライブラリを使用するのではなく、常にゼロから作成されているようです。オーバーヘッドが大きすぎませんか?

Thrift、Protocol Buffers などについても読みましたが、これはネットワークの相互運用性を目的としているようですか?

質問

したがって、最後の質問は次のとおりです。

各プラットフォームのクライアントのコアで単一の C ライブラリを使用することは可能ですか? はいの場合:どのように行うべきですか?

4

1 に答える 1

2

同じ機能のすべての実装を 1 つのコードに統合したい場合、C ライブラリを使用することは理にかなっています。これはおそらく、高水準言語で普遍的に使用できる唯一の言語です。

プロセスをある程度自動化できれば、作業は大幅に簡単になります。SWIGをご覧になることをお勧めします。これは、C/C++ コードを他の多数のプログラミング言語で使用できるようにするバインディング ジェネレーターです。これには、あなたが言及した言語のすべてではないにしても、ほとんどが含まれます。

私のかなり表面的な経験では、SWIGはかなりまともな仕事をしますが、生成されたコード時々微調整が必​​要です...

于 2012-12-26T01:34:45.827 に答える