2009-06-10 89 views
7

我在看2009年WWDC主題演講和某個人說,有關Windows 7/Vista中讓我好奇..DLL和註冊表有什麼問題?

揚聲器聲稱,7仍然是一個操作系統差,因爲它仍然使用相同的技術,如DLL和註冊表中。他的聲明有多準確,OS X做得有多不同?即使os x已經動態加載庫的權利?我想註冊表的東西可能會有一些重量..

任何人都可以向我解釋每個操作系統的策略的差異?

我不是要激起的fanboys或任何東西,我只是想知道這兩種操作系統中是如何解決一般問題..

感謝,

克雷布斯

+0

因此,無論如何,我想這個問題仍然存在。如果dll和註冊表比較差,是什麼讓他們如此?如果發言人說的是真的,os x使用哪種方法優於dll和註冊管理機構? – krebstar 2009-06-10 09:07:59

回答

4

的DLL

OS X和Windows之間的主要區別是,Windows歷史上試圖通過使大家共享代碼(即您安裝一個DLL,每個人都可以使用它),以節省空間/內存。蘋果靜態地將所有非系統庫編譯到每個應用程序中(當然不是,但也可能是)。浪費磁盤空間/內存,但使應用程序部署更方便方式,並且沒有版本問題。

註冊

OS X 確實有登記,他們只是平面文件稱爲的Plist,而不是一個神奇的成分這主要是喜歡,除非它不是一個文件系統。蘋果的方法可以輕鬆地將設置從一臺機器遷移到另一臺機器,而Windows的方法是更快的內存方式,並且允許應用程序輕鬆地「觀察」一個鍵,而不會造成大的性能下降(即一個應用程序更改了鍵和另一個應用程序立即知道它)。

總之

主旨演講的全部的話,10.6大多是相同的代碼爲10.5,這是幾乎相同的代碼爲10.4等,就像Win7的大多是Vista中,其中大部分是服務器'03等。有在操作系統中測試過的代碼太多,無法發佈每一個版本,特別是如果你真的希望你的客戶的應用程序工作。

-4

DLL的是壞的變化由於它們無法自行操作,因此使用它們時會自動調用另一個包裝可執行文件,這會增加不必要的開銷,並使得更難分辨哪些庫實際在使用中。另一個不太重要的缺陷是系統無法真正共享一個圖書館。* nix系統通過在獨立運行的頂層或更大的包裝(如kde-init)上存在庫來避免這種情況,這些庫可以被任何應用程序共享,這意味着只需要每個庫的單個副本,並且您可以隨時根據需要輕鬆殺死單個圖書館。

註冊表是一個好主意,除了它被用於這麼多的事實,幾乎所有你安裝的東西都會使用註冊表,並且一個損壞的註冊表並且使你的操作系統幾乎完全無用,直到它被修復。 在* nix系統中,通過爲不同內容提供多個不同文件,通過Xorg的配置文件引用驅動程序,將安裝的應用程序寫入自己的數據庫,並將密鑰或標識通常寫入目錄而不是一個單一的通用文件。這可以減少嚴重故障的可能性,並意味着您可能在任何時候都可能修復系統。如果Xorg變得損壞,您只需重新配置它,如果安裝的應用程序數據庫損壞,您可以修復或重建它,並且如果應用程序單個設置目錄損壞,則只需重新安裝一個應用程序(並且最好的商業aps應該有修復方法無論如何)

+0

對不起,我認爲有可能共享DLL?嗯.. = /無論如何感謝您的答案:) – krebstar 2009-06-10 07:37:06

+3

實際上,使用DLL不需要任何包裝可執行文件,它們直接由應用程序使用。此外,應用程序當然可以共享DLL。共享的一個例子是Windows的系統DLL或.NET GAC程序集。 – 2009-06-10 07:59:02

+0

這裏有關DLL的註釋非常不正確。 DLL可以(並且經常)在進程之間完全共享。 – Foredecker 2009-06-13 04:15:11

7

當然,這兩個操作系統都有使用DLL的設施(它們在OS X上稱爲dylibs或Frameworks,取決於它們如何打包).dylibs非常類似於DLL - 它們是動態鏈接的圖書館,因此它們可能會有多個版本。另一方面,框架實際上是一個目錄結構。它們包含動態鏈接庫(可能包括它們的多個版本),資源,頭文件和文檔等。OS X上的動態鏈接程序會自動處理從每個可執行文件的框架中選擇正確的庫版本。該系統似乎比Windows的DLL管理更好,當然,Windows的系統與Apple遷移到OS X時遺留的遺留問題相關聯。公平地說,Unix已經長期解決這個問題,並且使用符號鏈接將dylib鏈接到正確的版本化實現,允許多個安裝版本。

沒有OS註冊表的等效物。這是好的和壞的。好的一面是,用註冊表搞壞整個OS X系統會更困難。 OS X改爲將配置存儲在許多單獨的文件中,通常每個應用程序,用戶,一個或多個文件。這些文件通常是plist(表示字典,數組和原始類型的XML模式)格式文件。壞的一面是,通過保留這種Unix-y的傳統,OS X沒有相同的管理工具,可以通過註冊表進行轉義並執行各種瘋狂的事情。