Wo sollten in einem mehrschichtigen Projekt Schnittstellen definiert werden?

9

Ich habe ein mehrstufiges Projekt, das aus drei Unterprojekten besteht, dh Datenzugriffsprojekt, Business Logic-Projekt und Präsentationsprojekt. Wo sollten Schnittstellen definiert werden? Ich vermute, dass es Schnittstellen geben sollte, die sowohl in der DAL als auch in der BLL definiert sind. Im Zusammenhang mit dem Testen der Business Logic Layer unter Verwendung von "Test" -Daten, die auf der Schnittstelle basieren, scheint es, dass es möglicherweise ein separates Projekt mit nur der geben sollte Schnittstellen?

Irgendwelche Best Practices oder Ideen, wie dies arrangiert werden sollte?

John S.
quelle

Antworten:

9

Ein guter Ansatz hierfür ist die Verwendung des Treppenmusters:

Geben Sie hier die Bildbeschreibung ein

Die DAL lebt also in einem Projekt, ihre Schnittstellen in einem anderen, die BLL in einem dritten, ihre Schnittstellen in einem vierten und so weiter.

Die Idee ist, dass Sie beim Testen von z. B. der Business-Schicht nur auf das DAL-Schnittstellenprojekt verweisen, anstatt die gesamte echte DAL und z. B. NHibernate in den Geltungsbereich zu ziehen, um nur an diese Schnittstellen zu gelangen.

Soweit ich weiß, handelt es sich bei diesem Muster um die Kreation von Gary McLean Hall in seinem Buch " Adaptiver Code über C #: Agile Codierung mit Entwurfsmustern und SOLID-Prinzipien ".

David Arno
quelle