Ich habe selbst eine Menge gesehen und getan klein Produkte, bei denen ein und dasselbe Stück Software in eine ausführbare Datei und mehrere DLLs aufgeteilt ist, und diese DLLs sind nicht nur gemeinsam genutzte Bibliotheken, die von jemand anderem erstellt wurden, sondern Bibliotheken, die ausschließlich für diese Software von demselben Entwicklerteam erstellt wurden. (Ich spreche hier nicht von großen Produkten, die Hunderte von DLLs benötigen und sie in großem Umfang mit anderen Produkten gemeinsam nutzen).
Ich verstehe, dass die Aufteilung des Codes in mehrere Teile, von denen jeder in eine separate DLL kompiliert wird, gut ist aus der Sicht eines Entwicklers . Das bedeutet, dass:
- Wenn ein Entwickler ein Projekt ändert, muss er nur dieses und die abhängigen Projekte neu kompilieren, was sehr viel schneller geht.
- Ein Projekt kann von einem einzelnen Entwickler in einem Team durchgeführt werden, während andere Entwickler lediglich die bereitgestellten Schnittstellen nutzen, ohne in den Code einzugreifen.
- Automatische Software-Updates können manchmal schneller sein und haben geringere Auswirkungen auf den Server.
Aber was ist mit dem Endverbraucher? Ist es nicht einfach schlecht, ein Stück Software auszuliefern, das aus einer EXE und mehreren DLLs besteht, wenn alles in einer Gruppe zusammengefasst werden könnte? Immerhin:
- Der Benutzer versteht vielleicht nicht einmal, was diese Dateien sind und warum sie den Speicherplatz auf seiner Festplatte füllen,
- Möglicherweise möchte der Benutzer ein Programm verschieben, z. B. auf einem USB-Stick speichern. Eine einzige große ausführbare Datei macht die Sache einfacher,
- Die meisten Antivirenprogramme prüfen jede DLL. Die Überprüfung einer ausführbaren Datei ist viel schneller als die einer kleineren ausführbaren Datei und Dutzender von Bibliotheken.
- Die Verwendung von DLLs macht einige Dinge langsamer (zum Beispiel muss in .NET Framework eine "gute" Bibliothek gefunden und geprüft werden, ob sie signiert ist),
- Was passiert, wenn eine DLL entfernt oder durch eine schlechte Version ersetzt wird? Wird das von jedem Programm so gehandhabt? Oder stürzt es ab, ohne überhaupt zu erklären, was falsch ist?
- Eine einzige große ausführbare Datei hat einige andere Vorteile .
Así que Ist es aus Sicht der Endbenutzer nicht besser, für kleine/mittelgroße Programme eine große ausführbare Datei bereitzustellen? Wenn ja, warum gibt es keine Werkzeuge, mit denen sich dies leicht bewerkstelligen lässt (z. B. ein in gängige IDEs integriertes magisches Werkzeug, das die gesamte Lösung in eine einzige ausführbare Datei kompiliert, natürlich nicht jedes Mal, sondern bei Bedarf oder während der Bereitstellung).
Dies ist in gewisser Weise vergleichbar mit alle CSS- oder JavaScript-Dateien in eine große Datei zu packen für den Benutzer. Mehrere Dateien zu haben, ist für den Entwickler viel schlauer und einfacher zu pflegen, aber jede Seite einer Website mit zwei Dateien statt mit Dutzenden zu verknüpfen, optimiert die Leistung. Auf dieselbe Weise, CSS-Sprites sind schrecklich für die Designer, weil sie viel mehr Arbeit erfordern, aber aus Sicht der Benutzer sind sie besser.