separation-of-concerns

___ qstnhdr ___ Wie Ninject angewiesen wird, an eine Implementierung zu binden, auf die es keinen Bezug hat ___ qstntxt ___

Ich verwende NinjectMVC3 in meinem ASP.NET MVC3-Projekt.

Ich habe 3 Ebenen

  • Foo.Web
  • Foo.Services
  • Foo.Data

Foo.Web verweist auf Foo.Services, aber nicht auf Foo.Data. Einer meiner Dienste sieht so aus.

%Vor%

NinjectMVC3 führt diese Bootstrapping-Methode im Foo.Web-Startup

aus %Vor%

Wie kann ich FooServices Abhängigkeiten von Foo.Web injizieren?

    
___ tag123dependencyinjection ___ Ein Entwurfsmuster, um die Kopplung zwischen Komponenten zu reduzieren, indem dynamisch in Abhängigkeiten einer Softwarekomponente injiziert wird, die es benötigt, um zu funktionieren. ___ tag123aspnetmvc ___ Das ASP.NET MVC Framework ist ein Open-Source-Webanwendungsframework und Tooling, das eine auf Webanwendungen basierende Version des Model-View-Controller (MVC) -Musters implementiert und auf einer ASP.NET-Technologiegrundlage aufbaut. ___ tag123ninject ___ NInject ist ein Abhängigkeits-Injection-Framework für .NET-Anwendungen. ___ tag123 separationofconcerns ___ Design-Prinzip, das den Prozess der Trennung eines Computer-Programms in verschiedene Funktionen umfasst, die sich in der Funktionalität so wenig wie möglich überschneiden. ___ answer6245618 ___

Damit Sie in die richtige Richtung weisen, schlage ich vor, dass Sie sich die Zwiebel ansehen Architektur.

Es ist Grundvoraussetzung, dass jeder Code von zentraleren Ebenen abhängen kann. In Ihrem Szenario (und für MVC3-Apps, bei denen das Repository-Muster verwendet wird, ist es üblich) sollte Ihre Benutzeroberfläche einen Verweis auf die Services-Ebene haben und es ist akzeptabel, einen Verweis auf die Datenebene zu haben.

Wenn Sie bereit sind, das zu akzeptieren (es ist eine harte Pille, wenn Sie von einem klassischen N-Tier-Setup kommen, ich weiß), dann wird Ihre Situation viel einfacher.

Mit Ninject machst du jetzt etwas wie folgt:

In Ihrer NinjectMVC3.cs Datei wird Ihr CreateKernel

%Vor%

Nun fügen Sie in Ihrer Servicesbene einen Verweis auf Ninject hinzu (einfach nur Ninject über NuGet, nicht den MVC3-Drop-in via NuGet) und fügen das über das ServiceDIModule, was wie folgt aussieht, hinzu:

%Vor%

und Sie wiederholen den gleichen Prozess für die Daten Tier-Injektionen, die Sie haben können (UnitofWork, DatabaseFactory, IFooRepository, etc.)

%Vor%

Jetzt haben Sie Zugriff auf alle Bindungen, die Sie im Voraus benötigen. Ihre Frage an mich läuft also auf eine Verschiebung des Denkens hinaus. Wenn Sie das Zwiebel-Konzept akzeptieren (widerwillig oder nicht), löst sich Ihr Szenario sauber auf.

Sie können auch Project Silk und CodeCampServer ausprobieren . Beide implementieren das "Zwiebel" -Konzept bis zu einem gewissen Grad (Silk sicher, ich schaue mir die Lösung gerade an und das UI-Webprojekt enthält einen Verweis auf das Datenprojekt, das alle Repos enthält)

Lass mich wissen, was du denkst.

    
___ tag123aspnetmvc3 ___ ASP.NET MVC 3 ist die dritte Hauptversion der Model-View-Controller-Erweiterung für die Entwicklung von Webanwendungen in einem .NET-Framework. ___
1
Antwort

Repository Muster und Layering. Wo verwende ich Sicherheit?

Ich tue mein Bestes, um meine Web-App mit einer guten Trennung zwischen den Layern zu gestalten. Ich verwende das Repository-Muster und habe als solches ein SQLObjectRepository, das von meinem ObjectService aufgerufen wird, der von meinem Web-Fr...
09.12.2008, 18:49
3
Antworten

Trennung von Logik und UI

Ich entwickle eine GUI-Anwendung in Qt. Dies ist meine erste GUI-Anwendung und ich bin nicht sehr erfahren und muss immer noch mit einigen fortgeschritteneren Aspekten von C ++ und Qt-Framework ringen. Die Anwendung ist ziemlich einfach, m...
13.08.2011, 14:56
3
Antworten

Erstellen von Ansichten in PHP - Best Practice

Ich arbeite an einer Website mit zwei anderen Entwicklern. Ich bin nur verantwortlich für die Erstellung der Ansichten. Die Daten sind in einem Objekt verfügbar, und ich habe Getter, um die Daten zu lesen und dann XHTML-Seiten zu erstellen....
03.06.2011, 15:55
4
Antworten

Entity Framework, Anwendungsschichten und Trennung von Anliegen

Ich verwende das Entity Framework 4.1 und ASP.Net MVC 3 für meine Anwendung. MVC bietet die Präsentationsschicht, eine Zwischenbibliothek bietet die Geschäftslogik und die Entity Framework Art von Handlungen als die Datenschicht, denke ich? I...
11.05.2011, 17:06
1
Antwort

Wie Ninject angewiesen wird, an eine Implementierung zu binden, auf die es keinen Bezug hat

Ich verwende NinjectMVC3 in meinem ASP.NET MVC3-Projekt. Ich habe 3 Ebenen Foo.Web Foo.Services Foo.Data Foo.Web verweist auf Foo.Services, aber nicht auf Foo.Data. Einer meiner Dienste sieht so aus. %Vor% NinjectMVC3 führt d...
05.06.2011, 04:26