In welcher Baugruppe sollte sich ein angepasstes Autofac-Modul befinden?

8

Ich habe eine c # -Anwendung wie folgt eingerichtet:

%Vor%

Grundsätzlich werden die meisten meiner Schnittstellen und einige konkrete Klassen in der Domänenassembly gefunden, wobei viele der konkreten Implementierungen in der FileAccess-Assembly gefunden werden. Die ConsoleApp-Assembly verwendet die Domänenassembly ohne Referenzen auf die FileAccess-Assembly.

Ich habe ein Autofac-FileAccess-Modul erstellt, um FileAccess-Implementierungen mit den Domänenschnittstellen zusammen mit allen konkreten Klassen direkt innerhalb der Domänenassembly zu verkabeln. Meine Frage ist, wohin dieses Modul gestellt werden soll. Aus der Best Practices-Perspektive sollte sich das Modul in der FileAccess-Assembly befinden (dazu würde ich eine Referenz / Abhängigkeit von den Autofac-Assemblys hinzufügen) oder in der ConsoleApp-Assembly > (verwendet das Modul und hat bereits eine Autofac-Abhängigkeit)? Oder würde eine völlig separate Baugruppe, die nur das gegebene Modul hat, Sinn machen?

Danke

    
Jason Down 22.11.2011, 15:03
quelle

1 Antwort

8

Ein Container sollte nur aus dem Kompositionswurzel der Anwendung referenziert werden, was in Ihrem Fall bedeutet die ConsoleApp-Assembly .

Dies stellt sicher, dass Assemblys, die die Anwendungslogik enthalten, keine Abhängigkeit von einem bestimmten DI-Container erhalten.

Sie könnten das Modul auch in einer separaten Assembly implementieren und diese aus dem Composition Root laden, aber da diese Assembly (die ConsoleApp) immer noch einen Verweis auf Autofac benötigt, wird davon nicht viel gewonnen . Es hängt ein wenig vom jeweiligen Szenario ab, aber wenn Sie nicht eine ISV-Anwendung erstellen, die für viele unkontrollierte Kunden als (virtuell) eingeschweißte Software ausgeliefert wird, lohnt sich der Aufwand selten.

    
Mark Seemann 22.11.2011, 15:45
quelle