2016-10-28 1 views
1

Ich arbeite an einer C# -Zuweisung. Ich muss meine C# -Anwendung als 3-Schicht entwerfen, wobei die Schichten in ihren eigenen Paketen implementiert werden müssen. Um dies zu beheben, habe ich meinem Projekt in Visual Studio Ordner hinzugefügt. Ist das der richtige Ansatz?C# Design als 3-Schicht und implementieren Sie eine Schicht als. DLL (Bibliothek)

Dann muss ich die Business-Logik als. DLL (Bibliothek) implementieren. Was ich getan habe, ist ein neues Klassenbibliothek-Projekt in meiner Lösung zu erstellen. Was ich jetzt habe, ist:

Screenshot of my Solution Explorer

Ich bin mir nicht sicher, wie dies zu tun. Ist es richtig gemacht? Wenn ja, möchte ich wissen, was jetzt zu tun ist. Soweit ich weiß, muss ich das Klassenbibliotheksprojekt erstellen, um die .dll-Datei zu erhalten, die ich als Referenz zum anderen Projekt hinzufügen kann. Aber wenn ich meine Geschäftslogik in das Klassenbibliotheksprojekt schreibe, was soll ich dann in mein BusinessLogic-Paket im Hauptprojekt schreiben?

Wenn meine Vorgehensweise falsch ist, bitte sagen Sie mir, wie Sie das lösen können.

+0

Jede DLL wird ein separates Klassenbibliotheksprojekt in Visual Studio sein. Die Verwendung von Ordnern organisiert nur die Codedateien. Sie brauchen also drei Klassenbibliotheken - eine für jede "Schicht" –

+0

Es scheint, dass die Idee der Aufgabe darin besteht, Ihnen die Trennung von Belangen beizubringen, die 3 Schichten sollen lose gekoppelt sein und jede Schicht ist auf eine ausgerichtet Aspekt der Anwendung. Zum Beispiel haben Sie in MVVM eine Kontrollschicht (auf der Sie Ihre UI-Steuerelemente platzieren), eine Ansichtsmodellschicht (Objekte, an die die UI-Bindung gebunden ist) und eine Modellschicht (Geschäftslogik, Dienste usw.). Bevor du überhaupt anfängst, würde ich vorschlagen, etwas Zeit in die Design-Phase zu investieren und zu entscheiden, was in die einzelnen Ebenen eingefügt werden soll. Wenn Sie möchten, können Sie für jede Ebene separate Projekte erstellen. – brakeroo

+0

Scheint so, als ob Ihr BusinessLogic-Paket eine Klassenbibliothek sein sollte, die eine Schnittstelle für andere "Ebenen" bietet, um ihre Funktionalität zu nutzen. Können Sie mehr Informationen über das Projekt geben, ich möchte ein Beispiel geben, aber die Frage ist ein wenig zu abstrakt. – brakeroo

Antwort

1

Sie benötigen eine Klassenbibliothek für jede Ebene unter Ihrer Anwendung. Sie können tun, was Sie sagen und kompilieren Sie die Klasse, um eine DLL zu erhalten, dann fügen Sie die DLL als eine Referenz, aber um zu vereinfachen, fügen Sie einen Projektverweis zu jedem der Klassenbibliothek Projekte ... Der Compiler kümmert sich dann um die DLL-Referenzen wenn Sie es bauen.

+0

Ich würde argumentieren, dass die "Schichten" ein abstraktes Konzept ist, könnte von verschiedenen Klassen (definiert in verschiedenen Paketen, wie die Anforderungen erfordern) zu verschiedenen Projekt-DLLs (oder sogar Anwendung/Prozesse) erreicht werden - die Idee ist die Schichten brauchen lose gekoppelt sein und sich auf bestimmte Verantwortlichkeiten konzentrieren, das wären Module, die wiederverwendet, unabhängig getestet und modifiziert werden können, ohne andere Teile des Systems zu beeinflussen. – brakeroo

+0

Ich kaufe dein Argument, aber die Frage lautet: "Dann muss ich umsetzen die Geschäftslogik als .dll (Bibliothek). " was impliziert, dass mindestens eine der Schichten (Business Logic Layer) eine separate Klassenbibliothek ist, habe ich lediglich dahingehend erweitert, dass die 3. Schicht (man vermutet wahrscheinlich Datenzugriff) wieder eine separate Klassenbibliothek ist - aber wie Sie darauf hinweisen, ist dies nicht der Fall Muss nicht sein. – Theo

+0

Ja, sowohl Business Logic als auch Datenzugriffsschichten müssen Klassenbibliotheken sein, aber im Moment muss ich die Datenzugriffsebene nicht implementieren. Wenn ich mir die Antworten ansehe, sieht es so aus, als ob die beste Lösung darin besteht, für jede Ebene ein Projekt zu erstellen, also werde ich diesen Ansatz versuchen. – qwerty

Verwandte Themen