Da ich Probleme in com, Seite an Seite, behoben habe, während ich die Windows-Registrierung leidenschaftlich hasste, habe ich mich gefragt, warum das nötig ist.
Ich war nie gezwungen, ein ganzes Buch über bewährte Verfahren für die Registrierung zu lesen und es dann einfach zu lesen.
Ich habe jedoch Linux und Mac OS verwendet und mir angesehen, wie man mehrere Versionen von Python und seinen Bibliotheken auf demselben * nix-Computer installieren kann.
Da die Registrierung ein freies (wenn auch hässliches) Format hat und für alle möglichen Zwecke verwendet wird, habe ich nie verstanden, welches wesentliche Problem sie zu lösen versucht.
Microsoft möchte beispielsweise nicht, dass zwei verschiedene Versionen von MS Office nebeneinander installiert werden. Sie verwenden die Registrierung, um dies während der Installation zu erzwingen. Diese Einschränkung ist meiner Meinung nach künstlich. Wenn es ihnen wirklich darum ging, ein anderes Verhalten zuzulassen, hätten sie ihre Architektur entsprechend anpassen können.
Unter Mac OS können Sie Apps installieren und entfernen, indem Sie sie einfach in einem bestimmten Ordner ablegen.
Damit,
A) Welches wesentliche Problem versucht es zu lösen? B) Wie lösen andere Betriebssysteme das Problem?
Antworten:
Die meisten anderen Antworten sind mehr oder weniger richtig, aber (zusammen mit der Frage) verfehlen sie den Punkt.
Die Registrierung ist ein hierarchischer Datenbankmanager - nicht mehr und nicht weniger.
Die "Fehler", die Sie der Registrierung zuschreiben, sind wirklich unabhängig von der Registrierung selbst. Es handelt sich lediglich um Entscheidungen, die verschiedene Anbieter hinsichtlich der Installation ihrer Programme getroffen haben. Wenn Sie die Informationen auf eine andere Weise, in ein anderes Formular oder in einen anderen Container gespeichert haben, können dieselben Probleme bestehen bleiben.
Angesichts der Unix-Philosophie "Alles ist eine Datei" ist es (oder sollte es nicht überraschen), dass Unix-Systeme (und ähnliche Systeme wie Linux und MacOS) die Informationen als einzelne Dateien im Dateisystem speichern. Dies ist jedoch nicht annähernd so unterschiedlich, wie viele Leute sofort glauben, da das Unix-Dateisystem selbst eine hierarchische Datenbank ist (oder, wenn Sie symbolische Links berücksichtigen, eine Netzwerkdatenbank). Der krasse Unterschied besteht darin, dass auf die Registrierung über eine separate API zugegriffen wird, wobei das Speichern von Konfigurationsdaten in Dateien den Zugriff auf diese Dateien, das Bearbeiten usw. über dieselbe API (und dieselben Tools) wie bei allen anderen Dateien ermöglicht.
quelle
Es ist ein Einstellungs-Repository - ein zentraler und etwas standardisierter Ort für Einstellungen, Einstellungen und Lightweight-Profile .
Es wird einfacher zu verstehen, wenn Sie das Gesamtbild aller Dinge betrachten, die ein Betriebssystem für seine Benutzer und Anwendungen speichern muss:
Windows
HKEY_LOCAL_MACHINE
und speziell ein Großteil davon ist in\SOFTWARE\Microsoft
HKEY_LOCAL_MACHINE
HKEY_USERS
,[user]\SOFTWARE\Microsoft
HKEY_USERS\[user]\SOFTWARE
C:\Users\[User]\AppData
in versteckten Ordnern sehen mussC:\Users\[User]\
in nicht ausgeblendeten Ordnern haben möchte, die von der App erstellt wurdenMac OS X
/Library/Preferences
incom.apple...plist
Dateien/Library/Preferences
inplist
Dateien von Drittanbietern/Users/[user]/Library/Preferences
wie oben/Users/[user]/Library/Preferences
wie oben/Library/Application Support
/Users/[user]/Library/Application Support
/Users/[user]/
in nicht ausgeblendeten Ordnern haben möchteIm Wesentlichen ist die Registrierung identisch mit den Ordnern von Mac OS X
/Library/Preferences
und nicht viel mehr oder weniger.Die Tatsache, dass Mac OS nahezu eins zu eins mit organisatorischen Gruppen von System- und Anwendungsdaten übereinstimmt, zeigt, dass die Windows-Registrierung ein vollständig gerechtfertigtes System ist, bei dem es sich nur um eine andere Vorgehensweise handelt
Aufgrund der Tatsache, dass die Registrierung kein Dateisystem ist, ist es schwieriger, Teile der Registrierung zu sichern, wiederherzustellen oder zu migrieren, während andere verbleiben. Daher bevorzuge ich das Mac-System, aber der Zweck ist nahezu identisch.
Beide Betriebssysteme verfügen über Anwendungen, die diese Strukturen in unterschiedlichem Maße verletzen, in der Regel indem sie einen etwas globaleren Kontext verwenden, um Dateien oder Ordner zu erstellen, die nicht wirklich dorthin gehören. Einige Anwendungen erstellen Ordner direkt in
C:\
oder/
ohne Aufforderung. Das macht mich wirklich verrückt!Übrigens: Während die Drag-and-Drop-Funktion von (den meisten) Mac OS-Anwendungen brillant ist, haben Sie ein ähnliches Problem mit verschiedenen Versionen nebeneinander, obwohl Sie es wahrscheinlich nicht bemerken - da Ihre Einstellungen nicht gespeichert werden in der
.app
Datei selbst, sondern inApplication Support
oderPreferences
wird noch jede Version der Anwendung die gleichen Einstellungen verwenden und sich gegenseitig beeinflussen, es sei denn , die neuere Version explizit einen Ordner mit einem anderen Namen zu verwenden , entscheidet (IntelliJIDEA70
,IntelliJIDEA81
usw.)quelle
Vor der Registrierung verwendete Windows INI-Dateien. Im Blog-Beitrag Warum werden INI-Dateien zugunsten der Registrierung nicht mehr empfohlen? Raymond Chen zählt die Probleme mit INI-Dateien auf, die gelöst werden sollten. Er zählt auch die Probleme auf, die XML-Konfigurationsdateien mit den alten INI-Dateien gemeinsam haben. Dies ist wahrscheinlich das, was es wert ist, betrachtet zu werden, da dies heutzutage in vielen Anwendungen verwendet wird.
All dies setzt voraus, dass die Anwendung in der Tat niemals in ihre Konfigurationsdateien schreibt, in denen ich nicht einverstanden bin, aber das würde die Situation nicht verschlechtern und nicht verbessern.
quelle
Meine Theorie ist, dass die treibende Kraft keines der oben genannten ist. Es war vielmehr eine Maßnahme gegen Piraterie. In den Tagen vor der Registrierung konnten Sie im Allgemeinen einfach ein ganzes Programm von einem Computer auf einen anderen kopieren. Finden Sie die .DLLs und Sie waren gut zu gehen. Die Registrierung macht dies viel schwieriger zu tun.
Es gibt sehr wenig, was die Registrierung erreicht, was meiner Meinung nach nicht besser durch eine Konfigurationsdatei pro Zweck erreicht werden könnte.
(2014) Um meine Überlegungen hier ein wenig zu erweitern: Ich sehe die Registrierung als ein Gott-Objekt. Wir alle wissen, dass das ein Gegenmuster ist.
quelle
Mein grobes Verständnis ist, dass die Registrierung als eine Art Einstellungs-Repository konzipiert wurde, das die früher verwendeten INI-Dateien überlagert.
(NB, ein grobes Verständnis, das könnte also falsch sein).
quelle
A) Ich stimme der Antwort von Tim zu.
B) Andere Betriebssysteme verwenden andere Methoden zum Speichern von Programmeinstellungen, z. B. Unix speichert Dateien normalerweise in / etc (globale Dateien) und im Benutzerordner in verschiedenen versteckten Ordnern (Benutzereinstellungen). Daher verwenden sie alle eine Form der Registrierung, mit der Ausnahme, dass sie in einigen Fällen verteilt wird.
quelle
So wie ich es verstehe (nicht unbedingt genießen)
A) Geben Sie einen "zentralen Speicherort" an, an dem jedes Programm Informationen zu seiner Installation oder Einrichtung speichern kann. Diese Informationen können dann von den Programmen nach Belieben verwendet werden. Anpassung, Pirateriebekämpfung usw.
All diese Informationen, die in dieser Struktur enthalten sind, schützen sie. Denken Sie an die Idee, dass sich Tiere zusammenfinden und mehr Sicherheit in Zahlen. Wenn jedes Info-Bit eine eigene INI-Datei wäre, könnte ein Benutzer es möglicherweise aus einer Laune heraus löschen. Sie können das immer noch tun, indem sie sich in die Registrierung eintragen, aber viele sehen es als eine Art Black Box und werden es nicht anfassen, weil sie befürchten, ihr System zu beschädigen.
B) Mac OS verwendet einzelne Dateien ähnlich wie die INI-Fenster, die vor der Registrierung verwendet wurden.
quelle
Der offensichtliche Zweck der Registrierung besteht darin, als einziges Repository für alle Konfigurations- und Einstellungsdaten zu fungieren und die Abhängigkeit von Konfigurationsdateien zu beseitigen.
Auf anderen Betriebssystemen werden mit dem Modus operandi anwendungsspezifische Informationen (wie Konfigurationsdateien) in versteckten anwendungsspezifischen Verzeichnissen im Basisverzeichnis des Benutzers gespeichert. (Das Spiel Aquaria speichert beispielsweise Konfigurationsinformationen in
$HOME/.Aquaria
.) Globale Einstellungsdateien werden in gespeichert/etc/
.Macs machen ihr eigenes Ding: Anwendungsspezifische
plist
Dateien werden (glaube ich) imLibrary
Verzeichnis des Benutzers oder des Systems gespeichert .quelle
Das Problem liegt nicht in der Philosophie der Registrierung, sondern im Design. Die Registrierung wird vom Betriebssystem verwendet, um wichtige Informationen zum geladenen Programm abzurufen. Anstatt die Informationen nach Bedarf zu laden, werden sie beim Booten alle geladen, was die Leistung des Systems "beeinträchtigen" kann. Das System wird auch gründlich missbraucht, da es von Anbietern mit einer Reihe von Informationen geladen wird und die Informationen häufig nicht entfernt werden, wenn die Software deinstalliert wird.
Im Gegensatz zu Unix, wo alles in Dateien gespeichert und bei Bedarf geladen wird. Das Betriebssystem ist auf diese Weise nicht auf die Programmierkenntnisse des Herstellers angewiesen, um die Leistung zu beeinträchtigen ...
quelle
Ich kann andere Betriebssysteme nicht kommentieren, aber die Registrierung hilft auch dabei, die Konfiguration einer Anwendung während eines Upgrades oder eines Deinstallations- / Neuinstallationsprozesses beizubehalten. Wenn sich die gesamte Konfiguration in einer INI-Datei befand, die aufgrund eines Upgrades mit zusätzlichen Funktionen ersetzt werden musste, könnten Probleme auftreten oder Sie müssen einen benutzerdefinierten Prozess erstellen, um Konfigurationsdaten in die eingehende INI-Datei einzufügen.
Mit den Daten in der Registrierung können Sie jedoch ein allgemeines Installationspaket (WIX, InstallShield usw.) verwenden, das die Deinstallation / Neuinstallation von Dateien übernimmt, ohne die Anwendungseinstellungen zu berühren.
quelle
(alle A. Ich bin mir nicht sicher über B)
Ich glaube, das liegt eigentlich an dem (historischen) Punkt, dass die Registrierung als eine Art gemeinsame Schnittstelle für Anwendungseinstellungen fungiert.
Hast du eine Bewerbung? Möchten Sie eine benutzerbezogene Einstellung speichern? Bung es in der Registrierung.
Sie müssen keine Benutzerprofile "sicherstellen" und müssen überhaupt nicht direkt auf das Dateisystem zugreifen. Win32 kümmert sich darum.
quelle
Es war eine Möglichkeit, den meisten Benutzern etwas Neues, Unbekanntes und Tabu zu erschaffen, damit sie es in Ruhe lassen konnten. .ini und autoexec.bat Dateien können leicht gelöscht oder zum Schlechten verändert werden.
Ändern der Registrierungseinstellungen, oh mein Gott!
quelle
In der Registrierung werden nicht nur die Anwendungseinstellungen gespeichert, sondern auch andere Programme und Komponenten . Letztendlich denke ich, dass dies der Grund ist, warum es in einer einzigen Datenbank zentralisiert ist und nicht über Tausende von Text- oder XML-Dateien verteilt ist.
Beispielsweise registriert sich eine Komponente, die beispielsweise Videoeffekte ausführt, in der Registrierung, sodass andere Videoanwendungen von ihrer Existenz erfahren und sie verwenden können. Durch ein zentralisiertes System wird das ernsthafte Durcheinander vermieden, da Tausende von Systemen und Anwendungen unterschiedliche Methoden verwenden, um diese Integrationsstufe zu erreichen.
quelle