2

我试图了解第三方软件中采用的设计策略。具体来说,我正在分析软件堆栈的“IMPLEMENTATION_LAYER”(例如)中的代码实现某些功能(通过 c 例程)并将这些例程的签名作为 API 公开给“应用程序层” 以供其使用的情况。这是通过以下方式完成的

应用层提供如下结构

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

以及一个基于宏的函数列表,用于初始化这个结构(使用合适的函数)并访问这个结构的方法。

问题

与遗留方法相比,以这种方式公开 API 有什么优势。我的意思是,只公开函数的原型。

4

1 回答 1

2
  • 最小的 API 导出:您不需要导出整个库;只是一个“GetAPI”API。
  • 版本化APIS:可以告诉 API 加载器正在请求 API 的哪个“版本”,因此公开了特定于特定版本请求的特性和行为
  • 模块化 APIS:API 加载器可以动态加载其他模块,并即时从这些 .so/.dll 文件中连接请求的 APIS。
  • 集中式许可:单个 API 加载器从根本上减少了需要执行许可代码检查的地方的数量。
  • 模式切换:根据请求的 API,可以加载或不加载不同的功能。换句话说,部分 API 填充。一个很好的例子是进入 FIPS 模式的加密库,其中只有合格算法的特定子集可以访问,而所有其他都被存根为错误条件。

这些只是我脑海中的一些

于 2012-11-22T10:50:35.250 回答