暴露API时的设计方面

时间:2012-11-22 10:35:31

标签: c api function-pointers

我试图了解第三方软件中采用的设计策略。具体来说,我正在分析一个案例,其中软件堆栈的“IMP​​LEMENTATION_LAYER”(例如)中的代码实现某些功能(通过c例程),并将这些例程的签名作为API公布给< strong>“APPLICATION LAYER”供其使用。这是通过以下方式完成的

应用程序层具有以下结构

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

和一个基于宏的函数列表,用于初始化此结构(具有合适的函数)并访问此结构的方法。

问题

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

1 个答案:

答案 0 :(得分:2)

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

这些只是我头脑中的一小部分

相关问题