2

MP3を再生するC++プログラムを書きたいです。利用可能なMP3デコードライブラリの中から、mpg123を選択しました。

libmpg123に対してリンクし、コードで必要な関数呼び出しを行うことができることに加えて、ライブラリには、実行可能ファイルと通信できるバックエンド/フロントエンドインターフェイスが含まれているため、コードを含める必要がないことに気付きました。私のプログラムで。

ライブラリに対して単にリンクするのではなく、フロントエンドを作成することの利点は何ですか?

4

3 に答える 3

6

利点のほとんどは、実行可能ファイルとライブラリ実行可能ファイルの間のプロセス分離に由来します。

  • 安全性とセキュリティの向上:ライブラリがクラッシュしている場合でも、アプリケーションはクラッシュしません。
  • 暗黙のマルチプロセッシング:両方が別々のプロセスで実行されているため、これはほとんど無料です。
  • ネットワークの素因:プロセス間の通信がパイプまたはstdin / stdoutを使用して行われる場合、それらをソケットに簡単に転送し、別のマシンで実行可能ファイルを実行できます。
  • 言語中立:好きなプログラミング言語を使用できます。

もちろん、外部通信チャネルを使用するとパフォーマンスが低下します。しかし、そのようなデカップリングを持つことの利点は非常に印象的です。

于 2010-09-03T20:13:04.967 に答える
1
  1. プログラムを再コンパイルせずにバックエンドをアップグレードできます。
  2. バックエンドがクラッシュした場合、おそらくプログラムを使用していません。
于 2010-09-03T20:17:02.940 に答える
0

私が見る限り、実行可能ファイルの唯一の使用法はテスト目的です。このサードパーティのlibを実行可能ファイルとして実行して、提供されているさまざまなAPIの動作を理解し、コードからその使用法をよりよく理解し、さまざまな入力でどのように機能するかを確認します。その後、ライブラリ呼び出しがプロセスのアドレス空間内にあるように、それをプロセスにリンクします。2つの実行可能ファイルを同時に実行すると、IPCオーバーヘッドも発生します。

于 2010-09-03T20:12:42.113 に答える