Frage

Ich habe eine AA WPF Prism Desktop -App mit ein paar Modulen. In der Vergangenheit habe ich alle meine lokalisierten Ressourcen in gemeinsame Ressourcendateien in die Infrastrukturbaugruppe eingebracht und in allen Modulen verwiesen.

Aber in letzter Zeit habe ich mich gefragt, ob dies tatsächlich aus Sicht der Wartung der richtige Ansatz ist. Im Wesentlichen bricht es auch eine Art von Modularität. Wäre es langfristig ein besserer Ansatz, modulspezifische Ressourcendateien in den Modulen selbst ein besserer Ansatz zu sein?

Alle Gedanken schätzten.

War es hilfreich?

Lösung

Was eines der Hauptziele von Prism angeht, scheint es nur offensichtlich, dass Ihre Ressourcen nur in die entsprechende Montage eingesetzt werden. Das Teilen von Ressourcen über eine zentralisierte Baugruppe ist das Gegenteil von Modularität. Wenn Sie dies auf die zentralisierte Art und Weise tun, erhalten Sie eine andere Art von DLL Hell, wenn Sie mehr (optionale) Module hinzufügen möchten. Sie müssen die gemeinsame Baugruppe ohne Kenntnis der Module, die die Baugruppe verwenden, aktualisieren. Und festzustellen, welches Modul nur wieder vorhanden ist, verstößt gegen die Modularität selbst. Die andere Möglichkeit besteht darin, die gemeinsame Montage immer auf die neueste Version zu aktualisieren. Was auch immer Sie tun, nach dem zentralisierten Ansatz zwingt Sie, alle Ihre Module rückwärtskompatible zu bauen.

Dies ist im Moment meine Sichtweise. Aber was ich nur wenige Wochen mit Prism arbeite, bin ich mir nicht ganz sicher, ob meine Aussage die Art und Weise ist, wie es gemacht werden sollte.

Andere Tipps

Ich habe nie Referenzen zwischen den einzelnen Modulen bei der Verwendung von Prisma (es sei denn, ein Modul ist in der Tat eine Verbesserung eines anderen). Ich neige dazu, gemeinsame Ressourcen, Schnittstellen usw. in eine „gemeinsame“ Assembly einzulegen, auf die alle Module und die Baugruppe mit der Schale enthalten sind. Dinge, die eine Schnittstelle implementieren, werden dann über den IOC-Container abgerufen, und die Implementierung wird in das Modul platziert, wo es "gehört".

Wie Sie schreiben, bricht sie im Infrastrukturmodul eine der Ideen hinter Prisma.

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