2011-04-01 88 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沒有足夠的瞭解來指出任何好的例子。

在任何情況下,一般規則是您使用框架爲程序提供接口以訪問功能,並在框架內使用插件來提供或擴展其功能。