Soll ich DLLs für Modularität erstellen?

8

Ich arbeite daran, eine App zu erstellen, die MSDN-Artikel nach Meta-Informationen wie dem Artikeltitel und anderen Artikeln aus derselben Sammlung analysiert. Diese App hat auch ein GUI-Front-End.

Ich bin daran interessiert, dieses Programm modularer zu gestalten, indem ich das Front-End vom Back-End und Back-End in zwei Teile unterteile - einen, der das Abrufen und allgemeine Parsen eines HTML-Dokuments behandelt und eines macht eine spezifischere Analyse in Bezug auf MSDN selbst. Die Idee dahinter ist, dass benutzerdefinierte UIs auf das Back-End gelandet werden können und die App in der Lage sein muss, andere Sites (vielleicht Google-Suchergebnisse) zu analysieren, indem sie einfach eine andere DLL einstecken.

Nach meinem Verständnis würden Sie normalerweise DLLs erstellen, um Code für verschiedene Anwendungen freizugeben. In diesem Fall suche ich jedoch nur nach Modularität für diese spezielle Anwendung. Ist es in diesem Fall noch sinnvoll, DLLs zu erstellen? Oder sollte ich eine andere Option in Betracht ziehen, wie zum Beispiel alle Klassen zusammen in eine einzige Baugruppe zu bringen?

Ich sollte beachten, dass ich relativ neu in der Programmierung bin, also auch wenn die Antwort "nein" ist, dann wird dies immer noch eine gute Übung sein, von der ich lernen kann. Wenn das der Fall ist, würde ich gerne wissen, ob diese Übung in irgendeiner Weise geändert werden sollte, um es angemessener zu machen.

    
Leonard Thieu 17.08.2010, 22:29
quelle

3 Antworten

7

Ich denke, dass Ihre Idee, DLLs in dieser Situation zu verwenden, eine gute Idee ist. Es gibt keine nennenswerten zusätzlichen Kosten bei der Verwendung von DLLs (möglicherweise ein bisschen mehr Startkosten höchstens). Und selbst wenn Sie derzeit nur planen, sie in dieser einen Anwendung zu verwenden, schadet es nicht, zukünftige Änderungen noch zu planen. Es gibt immer eine gute Chance, dass die DLLs mit wenig oder keiner Modifikation in einer anderen Anwendung verwendet werden können, falls erforderlich.

Darüber hinaus könnte die Aufteilung in separate DLLs für Modularität sogar beim Design- und Entwicklungsprozess helfen. Es macht das "Teilen" globaler Daten schwieriger (und das ist wahrscheinlich eine gute Sache). Wenn alles in einer monolithischen Einheit ist, kann es eine Tendenz geben, einfach Daten von einem anderen Ort zu holen. Wenn diese Daten in einer anderen Assembly vorliegen, ist es weniger wahrscheinlich, dass diese potentiell schlechte Praxis eintritt. Es kann den Entwickler zwingen, zu überdenken, wie man Probleme löst.

    
Mark Wilkins 17.08.2010, 22:36
quelle
1

DLLs können bei der Wartung Ihrer Anwendung helfen. Wenn Sie zukünftige Updates und / oder Fehlerbehebungen haben, können Sie bestimmte DLLs im Gegensatz zu der gesamten Anwendung aktualisieren. Dies wird auch dazu beitragen, Ihre Testfläche zu reduzieren.

Während der Entwicklung wird es auch ein bisschen einfacher sein, bestimmte Klassen / DLLs auszugeben und die tatsächlichen DLLs auszutauschen, sobald sie einmal entwickelt wurden.

Ich würde nicht verrückt werden und jede Klasse in eine eigene DLL stellen. Von einer höheren Ebene sollte es eine klare Gruppierung von Klassen geben, die zusammen sein sollten.

    
Edward Leno 17.08.2010 23:15
quelle
1

Es gibt mehrere Vorteile, um eine DLL zu erstellen:

  • Die DLL kann unabhängig vom Aufruferprogramm (Frontend)
  • geändert werden
  • Die DLL kann unabhängig von dem Aufruferproblem (Frontend) selbst verteilt werden
  • Wenn mehrere gleichzeitig laufende Software dieselbe DLL verwendet, ist der Speicherbedarf kleiner

Es kommt auch mit Kosten:

  • Sie können kein einfaches Vererbungsschema verwenden, um DLL-Klassen zu erweitern
  • das Teilen globaler Daten ist immer noch möglich, aber schwieriger (einige mögen sagen, dass dies ein besseres Design erfordert, aber es ist immer noch eine Einschränkung)
  • Unit-Tests von Code in einer DLL enthalten ist schwieriger
  • es gibt Probleme mit der Installation (die DLL muss an bestimmten Orten abgelegt und registriert werden, je nachdem, wie Sie sie verwenden)

Aber der Hauptpunkt in Bezug auf Modularität ist, dass DLL immer noch eine halbe Größe ist. Selbst wenn wir Kosten ignorieren, ist es nicht viel besser als eine Lib oder einfach nur bestehende Klassen wiederverwenden. Die Hauptvorteile sind für Reseller, nicht wirklich für Softwareentwickler, außer wenn Sie Drittanbieter erwarten. Und die aufgerufenen Funktionen laufen immer noch im selben Prozess wie das Hauptprogramm.

Wenn Sie einen wirklich sauberen Schnitt für die Modularität wünschen, könnten Sie eine echte Multi-Tier-Architektur mit separaten Prozessen für Front-End und Back-End und einer Kommunikationsschicht zwischen ihnen verwenden (zB TCP-Sockets). Das ist normalerweise sowohl vielseitiger als auch robuster und nicht viel komplexer, wenn es früh genug im Projektleben gemacht wird.

    
kriss 17.08.2010 23:22
quelle

Tags und Links