Frage

Ich bin gerade ein Design Treffen aus und hatte eine Frage an mich gestellt, wo ich bekam eine meiner Ideen, wie einige .dlls eines Projekts strukturieren wir bauen. Um ehrlich zu sein, ich habe keine Ahnung, wo diese „Idee“ kam aus dem es schien, genau wie natürliches Wissen zu mir. Allerdings wäre es hilfreich, wenn ich diese Meinungen mit einiger dokumentierte Analyse sichern kann.

Kennt jemand von Ressourcen, die explizit verschiedene Mechanismen zur Strukturierung von Baugruppen / Module / Quelle diskutieren?

UPDATE:

Nun, die Idee war nichts Besonderes. Wir sprechen über eine Abstraktionsschicht für einige Hardware, so dass die „App“, die diese Dienste verbraucht sein könnten (Art) plattformunabhängig. Bisher haben wir eine Schnittstellen-DLL hatte, die die Schnittstellen der App erklärt erfordert und eine Implementierung DLL, die sie für die eine Plattform implementiert wir bisher gehabt haben. Jetzt haben wir zwei Plattformen, aber sie sind sehr ähnlich. Um zu verhindern, die Schnittstellen .dll verschmutzt oder einige scheußliche Szenario zu sein, wo die Implementierungen einander verweisen lediglich vorgeschlagen, dass ich wir eine weitere DLL erstellen, die leben können zwischen den Schnittstellen und specificplatform.dlls wo gemeinsame abstrakte Implementierungen sitzt.

War es hilfreich?

Lösung

Wenn Sie eine Chance haben, einen Blick auf das Buch von Robert C. Martin:

Agile Prinzipien, Patterns und Practices in C # (Dies ist die neue Version speziell auf .Net gezielte)

Es gibt ein Kapitel zu Komponenten-Design gewidmet ist, die (wahrscheinlich) Ihre Frage beantwortet.

Zusammengefasst und nach diesem Buch zu lesen, empfehle ich immer Komponenten nach diesen Kriterien zu trennen:

  • Baugruppen sind Einheiten oder wieder verwenden : Wenn es Klassen gibt, die zusammen verwendet werden, müssen sie in derselben Baugruppe gehen

  • .
  • Baugruppen sind Einheiten der Änderung . Wenn es Klassen, die aus dem gleichen Grunde ändern müssen nicht, sie wahrscheinlich nicht in der gleichen Versammlung sein sollten

  • Baugruppen sind Einheiten der Bereitstellung . Wenn es Klassen gibt, die physikalisch an der gleichen Stelle eingesetzt werden müssen, sollten sie wahrscheinlich in der gleichen Versammlung gehen

Natürlich ist dies nur Heuristik und nicht die Rezepte. Sie müssen sich schließlich entscheiden, wie viel von jedem dieser drei Design-Heuristiken Sie auf die architektonischen Ziele Ihrer Anwendung basiert müssen (insbesondere die architektonischen Ziele für die Bereitstellung und Entwicklung / Änderung).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top