Frage

Kann mir jemand helfen, ich habe 2 Anwendungen und sie sind nahezu identisch. sie haben eine ganz andere Präsentationsschicht (Web) und die Business-Logik und Datenbank nahezu identisch sind. Im Grunde eine App hat einige Dinge, die andere nicht.

so habe ich mich gefragt, ob ich die folgenden, ohne zu brechen alle Regeln tun können, etc

Jede Anwendung hat ihre eigene Präsentationsschicht.
Jede Anwendung hat ihre eigenen Service-Layer.
Jede Anwendung hat ihre eigene Datenzugriffsschicht.
Jede App Aktien eine andere Service-Layer.

Daraus ergibt sich die Shared-Service-Schicht beide Anwendungen wie die Business-Logik zugreifen kann, ist identisch, aber sie haben beide einen anderen Service-Schicht, die in dort 5 oder 6 Methoden hat, die zu dieser tatsächlichen App spezifisch sind

Die Datenzugriffsschicht - Ich sehe nicht ohnehin dies teilen, da es zwei unterschiedliche DBs mit Entity Framework daher der EDM seine bekam dort so seine nicht dynamisch -. Und die Tische unterscheiden sich geringfügig

konnte ich IOC verwenden, um auf den gemeinsamen Datenzugriffsschicht Ich nehme

Würde jemand helfen oder Wetter Kommentar Dies ist eine gute Praxis .. Was ich will nicht zu tun haben, nur eine separate Serviceschicht, wenn eine Menge davon geteilt wird ..

Ist das eine gute Idee? Vielleicht falsch ich habe es haben, gibt es einen besseren Weg?

War es hilfreich?

Lösung

Als Arjen de Blok sagte, Ihre Geschäftseinheiten ein Repository verwenden soll, ein Repository ist ein Objekt mit Methoden abzufragen, zu aktualisieren oder Domain-Entitäten einzufügen.

Die Schnittstelle, die Ihren Repository beschreibt gehört zu Ihrer Domain-Schicht, aber die Umsetzung gehört zur Infrastrukturschicht (DAL).

Sie können die Domain und Infrastruktur Bibliotheken zwischen zwei Projekten teilen. Wenn diese beiden Projekte ihre Daten über einen gemeinsamen Web-Service oder eine gemeinsame Datenbank abruft, sollen Sie müssen nur wählen (dh injizieren), um die korrekte Umsetzung Ihrer Repository (Ihre Domain-Objekte kennen nur über die Schnittstelle Ihres Repository, nicht über die konkreten Typ)

Andere Tipps

Wenn die Geschäftslogik weitgehend identisch ist, dann sollten Sie diese zuerst den Fokus. Wenn Sie möchten, DDD tun, dann sollten Sie Ihre Einheiten und (Geschäfts-) Dienste zunächst identifizieren und diese in einer einzigen Bibliothek stellen.

Diese Einheiten und Business-Services sollten auf Ihre Infrastruktur Schicht (Ihre DAL) sprechen. Wenn die Infrastrukturschicht in diesen beiden Anwendungen sehr unterschiedlich ist dann versuchen, mit Schnittstellen zu arbeiten. So wickelt die intfrastructure Schicht mit Schnittstellen und nur aus der Domäne Schicht auf Ihre Infrastruktur Schicht über diese Schnittstellen zu sprechen.

Um Ihre Geschäftslogik zu Ihrer Infrastruktur Implementierung binden Sie IoC / DI nutzen könnten.

Sie können die DAL mit einer Repository-Schnittstelle vereinen. Sie könnten dann die Schnittstelle über Projekte umzusetzen. Sie werden wahrscheinlich auch mit einer EF-Repository-Basisklasse am Ende. Sie könnten eine ähnliche Technik, auf die Dienste gelten, eine gemeinsame Schnittstelle nutzen und dann die Service-Implementierungen spezialisiert sind.

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