【发布时间】:2011-07-27 09:45:46
【问题描述】:
框架和插件有什么区别?即哪些因素决定何时使用插件和框架?
【问题讨论】:
-
这个问题感觉主要是基于意见的,因此有资格关闭。
标签: macos plugins frameworks
框架和插件有什么区别?即哪些因素决定何时使用插件和框架?
【问题讨论】:
标签: macos plugins frameworks
框架提供功能,必须编写程序才能使用;插件扩展了其他东西的功能,通常不需要重写现有程序即可使用。您可以同时使用两者,一个提供基本界面的框架和一个为界面添加功能的插件。
例如:
PAM
PAM 库是一个框架; PAM 模块是插件。您编辑 /etc/pam.conf 或 /etc/pam.d/* 以使用插件,而不是重新编译使用 PAM 库的代码。但是旧的包需要重写以使用 PAM 框架,而不是直接访问各种系统文件。
NSS
同样,NSS 由一个框架和一组在该框架内提供功能的插件组成。在这种情况下,大多数东西都不需要重新编译,因为旧框架提供的接口(@987654323@ 的getpwent 和类似功能)对于新框架来说已经足够了。 (依赖于影子密码文件的任何东西,或者对于更旧的程序,常规密码文件中的密码都是例外。)配置涉及编辑/etc/nsswitch.conf而不是修改程序。
赛勒斯 SASL
与上述类似,SASL 库是一个框架,但身份验证机制是插件。配置主要通过 SASL lib 目录中的文件进行,尽管也有一些程序使用的接口允许将其嵌入到这些程序自己的配置文件中;同样,在任何一种情况下,都不需要重新编译来添加、更改、启用或禁用机制。
在 Mac OS X 上,服务作为插件实现;相应的框架内置在标准框架中。
有类似的适用于 Windows 的框架和插件,但我对 Windows 的了解还不够,无法指出任何好的示例。
在任何情况下,一般规则是您使用框架为程序提供访问功能的接口,并使用框架内的插件来提供或扩展其功能。
【讨论】: