macos - 插件和框架的区别

标签 macos plugins frameworks

框架和插件有什么区别?即哪些因素决定何时使用插件和框架?

最佳答案

框架提供功能,必须编写程序才能使用;插件扩展了其他东西的功能,通常不需要重写现有程序即可使用。您可以同时使用这两者,一个提供基本界面的框架和一个为界面添加功能的插件。

这方面的例子是:

  • 帕姆

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

    同样,NSS 由一个框架和一组在该框架内提供功能的插件组成。在这种情况下,大多数东西都不需要重新编译,因为旧框架提供的接口(interface)( libcgetpwent 和类似功能)对于新框架来说已经足够了。 (异常(exception)是依赖影子密码文件的任何东西,或者对于更旧的程序,常规密码文件中的密码。)配置涉及编辑/etc/nsswitch.conf。而不是修改程序。
  • 赛勒斯 SASL

    与上面类似,SASL 库是一个框架,但身份验证机制是插件。配置主要通过 SASL lib 目录中的文件进行,尽管也有一些程序使用的接口(interface)允许将其嵌入到这些程序自己的配置文件中;同样,在任何一种情况下,都不需要重新编译来添加、更改、启用或禁用机制。
  • 在 Mac OS X 上,服务作为插件实现;相应的框架内置在标准框架中。

  • Windows 有类似的框架和插件,但我对 Windows 的了解还不够,无法指出任何好的例子。

    无论如何,一般规则是您使用框架为程序提供访问功能的接口(interface),并使用框架内的插件来提供或扩展其功能。

    关于macos - 插件和框架的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5508929/

    相关文章:

    android - ionic vs Material 设计 vs tabris,或者 vs 其他框架

    python - django 通用模板

    java - 查看 Java 中的所有父类(super class)

    javascript - 未处理的异常:System.TimeoutException:请求 channel 在00:01:59.4579323之后等待答复时超时

    javascript:作为对象或函数传递

    macos - latexindent:自 macOS 11 Big Sur 以来安装 File::HomeDir、Mac::SystemDirectory 时遇到问题

    intellij-idea - 如果未启用 "List all Gerrit changes",Gerrit 更改不会出现在 IntelliJ IDEA 中

    macos - 通过cocoa应用程序在safari中打开url

    ruby - 在 Mac OS X 上升级 Ruby

    c++ - 使用 CGL 编译 MacOS 应用程序