В чем проблема с DLL и реестром? - PullRequest
8 голосов
/ 10 июня 2009

Я смотрел Keynote на WWDC 2009, и что-то, что кто-то сказал о Windows 7 / Vista, вызвало у меня любопытство ..

Докладчик утверждал, что 7 по-прежнему была плохой операционной системой, поскольку в ней все еще использовались такие же технологии, как библиотеки DLL и реестр. Насколько точны его утверждения и насколько отличается OS X? Даже OS X имеет динамически загружаемые библиотеки, верно? Полагаю, что в реестре есть вес ..

Может кто-нибудь объяснить мне различия в стратегии каждой ОС?

Я не пытаюсь подстрекать фанатов или что-то еще, я просто хочу знать, как обе операционные системы решают проблемы в целом ..

Спасибо

Креб

Ответы [ 3 ]

8 голосов
/ 10 июня 2009

Конечно, обе операционные системы имеют средства для использования DLL (они называются dylibs или Frameworks в OS X, в зависимости от того, как они упакованы) .dylibs очень похожи на DLL - они являются динамически связанной библиотекой и, как таковые, их может быть несколько версий. Фреймворки, с другой стороны, действительно являются структурой каталогов. Они содержат динамически связанные библиотеки (возможно, их несколько версий), ресурсы, заголовки, документацию и т. Д. Динамический компоновщик в OS X автоматически обрабатывает выбор правильной версии библиотеки из инфраструктуры для каждого исполняемого файла. Похоже, что система работает лучше, чем управление DLL в Windows, что, впрочем, еще довольно беспорядочно (конечно, система Windows связана с унаследованными проблемами, которые Apple уронила, когда они перешли на OS X). Справедливости ради следует отметить, что Unix уже давно решает эту проблему, а также использует символические ссылки для привязки dylib к их правильной версионной реализации, что позволяет использовать несколько установленных версий.

Не существует OS X эквивалента реестра Windows. Это и хорошо и плохо. Хорошая сторона заключается в том, что гораздо сложнее повредить всю систему OS X с ошибкой реестра. Вместо этого OS X хранит конфигурацию во многих отдельных файлах, обычно один или несколько для каждого приложения, пользователя или чего-то еще. Эти файлы, как правило, представляют собой файл формата plist (схема XML, представляющая словари, массивы и типы примитивов). Плохая сторона в том, что, сохраняя это наследие Unix-y, OS X не имеет тех же инструментов über-admin, которые могут перемещаться по реестру и совершать всевозможные сумасшедшие поступки.

5 голосов
/ 11 июня 2009

DLLs

Основное различие между OS X и Windows состоит в том, что Windows исторически пыталась сэкономить пространство / память, когда все делят код (то есть вы устанавливаете одну DLL, каждый может использовать ее). Apple статически компилирует (ну, не совсем, но вполне может быть) все несистемные библиотеки в каждое приложение. Трата дискового пространства / памяти, но упрощает развертывание приложения way и проблем с версиями.

Registry

OS X имеет реестр, это просто плоские файлы, называемые списками, а не магический компонент, который в основном похож на файловую систему, за исключением случаев, когда это не так. Подход Apple упрощает перенос настроек с одного компьютера на другой, в то время как подход Windows работает быстрее в оперативной памяти и позволяет приложениям легко «наблюдать» за ключом без особого успеха (т.е. одно приложение меняет ключ, а другое - другое). мгновенно об этом узнает).

В заключение

Полный докладчик полон, 10.6 - это в основном тот же код, что и 10.5, который был в основном тем же кодом, что и 10.4 и др., Точно так же, как Win7 - это, в основном, Vista, в основном Server '03 и т. Д. Есть слишком много проверенного кода в операционной системе, чтобы выбрасывать его при каждом выпуске, особенно если вы действительно хотите, чтобы приложения ваших клиентов работали.

0 голосов
/ 10 июня 2009

DLL - это плохие варианты библиотек, так как они не могут работать самостоятельно, для их использования вызывается (автоматически) дополнительный исполняемый файл-обертка, который добавляет ненужные накладные расходы и усложняет определение того, какие библиотеки на самом деле используются. Другим менее важным недостатком является неспособность систем по-настоящему совместно использовать библиотеку. * Системы nix избегают этого, так как библиотеки существуют на верхнем уровне, работающем самостоятельно или в более крупной оболочке (например, kde-init), библиотеки могут совместно использоваться любыми приложениями, то есть требуется только одна копия каждой библиотеки, и вы можете в любое время легко убить одну библиотеку по мере необходимости.

Реестр - отличная идея, за исключением того факта, что он используется для такого большого количества, почти все, что вы устанавливаете, будет использовать реестр и поврежденный реестр и сделает вашу операционную систему практически полностью бесполезной, пока она не будет исправлена. Этого избегают в системах * nix, так как имеется несколько разных файлов для разного контента, ссылки на драйверы через конфигурационный файл Xorg, установленные приложения будут записываться в их собственную базу данных, а ключи или идентификация часто записываются в каталог, а не в каталог. один универсальный файл. Это уменьшает вероятность серьезного сбоя и означает, что в любой момент вы все еще можете починить систему. Если Xorg поврежден, вы просто перенастраиваете его, если база данных установленных приложений повреждена, вы можете восстановить или восстановить ее, и если каталог с индивидуальными настройками приложения поврежден, вам нужно переустановить только одно приложение (и большинство хороших коммерческих приложений должны иметь способ восстановить). это все равно)

...