Eine einfache Möglichkeit, sich einer Antwort zu nähern, besteht darin, zu erkennen, dass "DLL" für "Dynamic Link Library" steht und der Schlüsselbegriff "Library" lautet.
Was möchten Sie in einer normalen Bibliothek? Gute Bücher, die von vielen Lesern (Benutzern) geteilt werden; nützliche Gegenstände, die sich verstauben, bis sie von einem Leser (Benutzer) referenziert werden, um eine kritische Frage in einem vielleicht verzweifelten Moment zu beantworten; und Ressourcen, die Leser (Benutzer) mit anderen Ressourcen verbinden. Codebibliotheken sind ähnlich. Wir behalten häufig gemeinsam genutzten Code, spezialisierte oder hochwertige Referenzmodule und architektonische Framework-Ressourcen darin. Softwarebibliotheken können in verschiedenen Arten von Code-Artefakten dargestellt werden, z. B. in Skripten, statischen Bibliotheken, dynamischen Bibliotheken, Komponenten und Ressourcendateien.
Im Allgemeinen empfehle ich, Ihre ausführbaren Module so zu gestalten, dass sie sich wie Skripte verhalten. Sie umreißen und verwalten klar die Hauptstruktur und den Ablauf Ihres Systems, fordern jedoch Ressourcen aus Ihren Bibliotheken auf, um die Details zu verarbeiten. Ich finde diesen Ansatz besser, als die Logik auf hoher Ebene mit verwirrenden und übermäßig spezialisierten und technischen Implementierungsproblemen auf niedriger Ebene zu verwechseln.
Wenn Sie überlegen, wie Sie Ihren Code zwischen ausführbaren Dateien und Bibliotheken zuordnen, müssen Sie sowohl das logische als auch das physische Design berücksichtigen.
In objektorientierten Systemen ist es beispielsweise wichtig, Ihren Code logisch zu organisieren, um den richtigen Methoden in den richtigen Klassen die Verantwortlichkeiten korrekt zuzuweisen. Dies ist Teil des logischen Lösungsdesigns. Ihr logisches Design sollte klar, sauber und schlank sein und in einer Terminologie ausgedrückt werden, die sich gut auf die Domain Ihrer Benutzer bezieht.
Wenn Sie vorhaben, Ihr System tatsächlich auf der Site eines Benutzers zu installieren, müssen Sie möglicherweise ein physisches Design erstellen, das angibt, wie Sie Ihren Code in einer Reihe leicht implementierbarer Softwareressourcenobjekte (normalerweise Dateien) bündeln, die leicht gemischt und abgeglichen werden können auf die Bedürfnisse eines bestimmten Zielsystems. Das Bestimmen, welche Ressourcen zu welchem Bereitstellungspaket gehören, erfordert im Allgemeinen einige spezifische Überlegungen zum physischen Design, die nichts direkt mit dem logischen Design zu tun haben. Beispielsweise möchten Sie möglicherweise bestimmte Bilddateiverarbeitungsbibliotheken austauschen, je nachdem, welcher Kunde einen bestimmten Satz von Bereitstellungsobjekten erhält.
In der Praxis werden Sie feststellen, dass ein gutes logisches Design normalerweise zu einem guten physischen Design führt.
Zusammenfassend ist das wichtigste Prinzip die intelligente Verpackung. Wenn Sie Ihre Codematerialien in stark verwandten Bibliotheken organisieren, erhalten Sie nützliche bereitstellbare Code-Artefakte, die Sie problemlos wiederverwenden, verschieben oder verschenken können.