2

サードパーティのソフトウェアで採用されている設計戦略を理解しようとしています。具体的には、ソフトウェアスタックの「IMPLEMENTATION_LAYER」(たとえば)のコードが(cルーチンを介して)特定の機能を実装し、それらのルーチンの署名をAPIとして「APPLICATIONLAYER」に公開して使用する場合を分析して います。これは次のように行われます

アプリケーション層には、次の構造が用意されています。

struct my_interfaces
{
    /*List of function pointers*/
};

この構造を(適切な関数で)初期化し、この構造のメソッドにアクセスするためのマクロベースの関数のリスト。

質問

従来の方法と比較して、この方法でAPIを公開することの利点は何ですか。つまり、関数のプロトタイプだけを公開するという従来の方法です。

4

1 に答える 1

2
  • 最小限の API エクスポート: ライブラリ全体をエクスポートする必要はありません。単なる「GetAPI」API。
  • バージョン管理された API : API ローダーは、API のどの「バージョン」が要求されているかを知ることができるため、特定のバージョン要求に固有の機能と動作の両方を公開します。
  • モジュラーAPI : API ローダーは、他のモジュールを動的にロードし、それらの .so/.dll ファイルから要求された API をオンザフライで接続できます。
  • 一元化されたライセンス: 単一の API ローダーにより、ライセンス コードのチェックを実行する必要がある場所の数が大幅に削減されます。
  • モードの切り替え: 要求された API に応じて、さまざまな機能をロードまたはロードしないことができます。言い換えれば、部分的な API ポピュレーションです。この良い例は、FIPS モードに入る暗号化ライブラリです。この場合、認定されたアルゴリズムの特定のサブセットのみがアクセス可能になり、他のすべてはエラー状態になるようにスタブ化されます。

それらは私の頭の上からのほんの一部です

于 2012-11-22T10:50:35.250 に答える