2011-04-01 95 views

回答

2

框架提供的功能,该程序必须被写入到使用;插件扩展了其他功能,通常以不需要重写现有程序的方式使用。您可以同时使用两者,提供基本接口的框架和为接口添加功能的插件。

这方面的例子有:

  • PAM

    PAM库是一个框架; PAM模块是插件。您编辑/etc/pam.conf/etc/pam.d/*以使用插件,而不是重新编译使用PAM库的代码。但是较旧的软件包需要重写才能使用PAM框架,而不是直接访问各种系统文件。

  • NSS

    同样,NSS包括一个框架和一组在该框架内提供功能的插件的。在这种情况下,大多数事情不需要重新编译,因为旧框架提供的接口(libcgetpwent以及类似函数)对于新接口来说已经足够了。 (例外情况是依赖于影子密码文件的任何内容,或者对于更旧的程序,则是普通密码文件中的密码)。配置涉及编辑​​insyead修改程序。

  • 赛勒斯SASL

    与上述类似,SASL库是一个框架,而认证机制的插件。配置主要由SASL lib目录下的文件组成,尽管也有一些接口被某些程序使用,这些接口允许将其嵌入到这些程序自己的配置文件中;再次,在任何情况下,它都不需要重新编译来添加,更改,启用或禁用机制。

  • 在Mac OS X上,服务实现为插件;相应的框架被构建到标准框架中。

还有类似的Windows框架和插件,但我对Windows没有足够的了解来指出任何好的例子。

在任何情况下,一般规则是您使用框架为程序提供接口以访问功能,并在框架内使用插件来提供或扩展其功能。