2012-04-13 9 views
1

Ich brauche eine komplexe Geschäftslogik in db für perfomance Gründen zu setzen und ich bin mit respository Muster. Die Frage ist - sollte ich diese Geschäftslogik aus dem Repository aufrufen? Ich weiß, dass das Repository BL nicht kennen sollte, weil es nur ein Vermittler zwischen der BL und dem Datenspeicher ist (es sollte nur CRUD und Abfragemethoden enthalten). Was denkst du?Repository und db spezifische Geschäftslogik

+0

„Ort einige komplexe Geschäftslogik in db“ => meinen Sie gespeicherte Prozeduren? – guillaume31

+0

ja, ich meine SP. – andrew

Antwort

2

Die Verantwortung eines Repository ist einen Anschein von In-Memory-Sammlung von Entitäten von bis zu bieten abzufragen oder hinzuzufügen. Ich weiß nicht, über welche Art von Geschäftslogik Sie sprechen, aber die Wahrscheinlichkeit ist groß, dass Sie das Prinzip der einheitlichen Verantwortung brechen würden, wenn Sie es in einem Repository einführen würden. Dies würde bedeuten, dem Repository-Code viele Gründe zu geben, sich zu ändern, weniger Kohäsion und damit viele Gründe zu brechen.

Wenn Sie in Ihrer Datenbank gespeicherten Prozeduren mit Business-Logik haben, würde ich empfehlen, eine Art Schnittstelle zwischen dem rufenden Code einführen und dem db Dinge zu halten entkoppelt. Es wäre kein Repository, da es den Zweck hätte, eine Geschäftslogik anstelle von persistenten Daten auszulösen, aber die Implementierung könnte beispielsweise die Form eines Infrastrukturdienstes annehmen.

Dies ermöglicht es Ihnen, Ihren Code isoliert mit einer Mock db zu testen und zu einer anderen Implementierung der DB-Zugriffsschnittstelle zu einem anderen DBMS oder sogar nur zu Objekten zu wechseln, wenn Sie gespeicherte Prozeduren aufgeben möchten Irgendwann.

Verwandte Themen