Frage

Ich habe einige Fragen zu drei Tierarchitektur.

  1. Wie kann ich eine Anwendung in drei Tierarchitektur korrekt implementieren?
  2. Wie kommuniziere ich zwischen diesen Ebenen?
  3. Ist die Datenstufe vollständig wie DBMS entspricht? (Wie wäre es in einem Fall, wenn wir gespeicherte Prozeduren verwenden und in einem Fall, wenn wir ein Relational Mapping -Framework für Objekte verwendet haben?)

Ich freue mich darauf, Ihre Antworten zu hören. Vielen Dank.


PS: Bitte verstehe nicht, dass ich eine allgemeine Frage stelle. OK ? Ich frage, wie man eine große Anwendung korrekt entwirft. Was ist der beste Weg? Ich erwarte nicht, dass LOOOOONG -Antworten.

War es hilfreich?

Lösung

Dies sind breite Antworten, ich werde mein Bestes geben, um Ihnen einige Hinweise zu geben.

  1. "Richtig" ist ein etwas subjektiver Begriff. Im Allgemeinen ist es meiner Meinung nach das Wichtigste, die Ebene in seinem eigenen Modul (z. B. seine eigene DLL) zu halten und Schnittstellen in und aus dem Modul zu haben. Durch die Verwendung von Schnittstellen in jeder Ebene können Sie die Definition von der Implementierung trennen und die Schichten weiter voneinander entkoppeln. Wenn es einen einzelnen Einstiegspunkt in die Ebene gibt und auf einer Schnittstelle basiert, können Sie nach Bedarf mehrere Implementierungen haben. In der anderen Richtung müssen die Layer -Clients (dh die anderen Ebenen) Schnittstellen als Rückrufe verwenden, um die Schnittstellen nur implementieren, um einen guten Fluss zwischen den Schichten zu erzielen.

  2. Das hängt davon ab, wie Sie die Schichten selbst implementieren. Wenn Sie die Schichten so entwerfen, wie ich oben vorgeschlagen habe, würden Sie einfach Schnittstellen verwenden, um in die Ebene zu gehen und herauszukommen. Eine andere Lösung könnte darin bestehen, es asynchron zu machen und mit Ereignissen - eine Schicht würde einfach ein Ereignis abfeuern, und eine andere Ebene würde dieses Ereignis hören und darauf reagieren. Es hängt alles von den spezifischen Anforderungen des Projekts ab.

  3. Nein, die Datenschicht ist die Ebene innerhalb der Anwendung, die mit den DBMs interagiert. Die Verwendung von ORM ist einfach eine Methode zur Implementierung der Datenschicht, während die Verwendung gespeicherter Prozeduren eine Methode zum Verschieben eines Teils der Logik aus der Anwendung in das DBMS selbst aus verschiedenen Gründen ist.

Ich denke, Sie werden mehrere Antworten erhalten. Sie sollten alle berücksichtigen, etwas über das Netz lesen und ein wenig experimentieren, bis Sie das finden, was Sie mögen.

Andere Tipps

  1. Die drei Ebenen sind Präsentation, Geschäftslogik und Daten. Stellen Sie sicher, dass Sie die Bedenken nicht mischen. UI sollte keine Geschäftslogik und so weiter enthalten.

  2. Jede Stufe sollte nur über die Stufe darunter wissen. Für Ex. Die Benutzeroberfläche sollte nur mit der Geschäftslogik kommunizieren und nichts über die Datenschicht wissen. Um dies immer zu erreichen Code zu Schnittstellen anstelle von konkreten Implementierungen. Verwenden Abhängigkeitsspritze Module locker gekoppelt zu halten.

  3. Dies hängt davon ab, wie Sie es implementieren möchten. Beginnen mit Yagni Rektor. Halten Sie die Dinge so einfach wie möglich, um Dinge wie ORM nur zu verwenden, wenn Sie sie wirklich brauchen.

Dieses Thema ist zu weit gefasst, um diese Frage in der erforderlichen Tiefe ordnungsgemäß zu beantworten. Das gesagt:

  1. Ein Schlüsselelement besteht darin, die Abhängigkeiten zwischen Schichten ordnungsgemäß zu begrenzen, so dass jede Schicht nur die Ebene "unten" kennt. ZB der Geschäftsschicht kennt die Präsentationsschicht nicht.

  2. Die 3-stufige Architektur macht kein Rezept darüber, wie die Schichten miteinander kommunizieren. Business (Tier) -Funktionalität wird häufig als Webdienste freigelegt, die von der Präsentationsschicht konsumiert werden.

  3. Die Datenebene entspricht nicht vollständig der Datenbank. Sie benötigen immer einen Code, um mit dem Data Store (z. B. ORM) zu interagieren. Dieser Code sollte in seinem eigenen Modul sein, um die Kopplung zu minimieren.

Dies hängt von vielen Faktoren ab. Ich würde mich ansehen, um ein Repositiry -Muster für Ihre Datenzugriffsschicht (DAL) zu verwenden. Im Idealfall würde dies in Verbindung mit einem Objekt Relational Mapper (ORM) wie Entity Framework 4 oder Nhibernate verwendet. Ich hätte dann eine separate Domain -Ebene, die Geschäftsregeln und -dienste enthält. Ihre Domain -Ebene würde Anfragen zwischen Ihrer Benutzeroberfläche und Ihrem und Ihnen Dal bedienen. Für Ihre Benutzeroberfläche haben Sie die Option von Webformen oder einem MVC -Ansatz. Beide werden immer noch innerhalb der drei Stufe arbeiten, aber Sie werden eine viel bessere Trennung von Bedenken von MVC erhalten. Dies ist gut, wenn Sie einige Einheitentests durchführen möchten. Hier sind einige gute Links zum oben genannten.

http://daveswersky.com/2010/05/26/entity-framework-4-then-and-now/

http://channel9.msdn.com/blogs/matthijs/aspnet-mvc-2-basic-introduction-by-scott-hanselman

http://www.asp.net/mvc/tutorials/mvc-music-store-te-part-1

Drei -Tier -Architektur ist ein Konzept, das nicht Schritt -für -Schritt -Anweisungen ist. Halten Sie es einfach und isoliert. Wenn Sie mit Datenspeicher und Abrufen arbeiten, legen Sie es in die Datenebene. Wenn eine Logik zu haben ist, legen Sie sie in die logische/mittlere Schicht. Themen/Skins, Ansichten, Widget -Platzhalter gehen in die Präsentationsebene.

Studieren Sie andere Code. Ein guter Ausgangspunkt wäre Einschienenbahn.

Lesen Sie viel Dokumentation, je mehr Sie wissen, was andere tun, desto besser.

Haben Sie vor allem Spaß damit. Wenn Sie sich überfordert fühlen oder wie die Dinge kompliziert werden, treten Sie zurück und finden Sie heraus, was am falschen Ort ist.

Die beste Möglichkeit, eine Anwendung in 3 -Tier -Architektur zu implementieren, besteht darin, einen Framework Ihrer Sprache zu verwenden, der MVC verwendet. Für PHP empfehle ich Codesigniter http://codegniter.com/

Normalerweise passiert das Übergeben von Objekten, wenn Sie OOP folgen, zwischen den drei Ebenen. Nun, meistens zwei. Control erhält die Anforderung, fragt das Modell (DB) und erhält ein Objekt dafür, verwendet die Eigenschaften und Methoden, um die Ansicht anzuzeigen.

Folgen Sie einigen Tutorials in CI. Sie erhalten eine Vorstellung davon, was in MVC passiert.

Es gibt drei Ebenen in drei Tierarchitekturen, die Präsentationsschicht, Geschäftslogikschicht und Datenzugriffsschicht sind. Abgesehen von diesen drei können wir eine Geschäftsobjektschicht verwenden, um Eigenschaftsklassen zu implementieren, mit denen unsere Objekte mit der Datenbank abgebildet werden können, oder Sie können Entity Framework verwenden.

Präsentationsfolie : Dies ist die höchste Ebene der Anwendung, in der der Benutzer seine Aktivität ausführt. Nehmen wir das Beispiel einer Anwendung, bei der der Benutzer ein Formular ausfüllen muss. Diese Form ist nichts anderes als die Präsentationsschicht. In Windows -Anwendungen sind Windows -Formulare die Präsentationsebene und in Webanwendungen gehört das Webformular zur Präsentationsebene. Grundsätzlich erfolgt die Eingabevalidierung und Regelverarbeitung des Benutzers in dieser Ebene.

Geschäftsschicht: Dies liegt oben auf der Präsentationsebene. Wie der Name schon sagt, werden die meisten Geschäftsbetriebe hier durchgeführt. Nachdem wir beispielsweise Formulardaten gesammelt haben, möchten wir sie mit unserer benutzerdefinierten Geschäftsregel validieren. Grundsätzlich definieren wir Klassen und Geschäftseinheiten in dieser Ebene.

Datenzugriffsschicht: Auf der Geschäftslogikschicht befindet sich die Datenzugriffsschicht. Es enthält Methoden, die der Geschäftsschicht helfen, sich mit der Datenbank zu verbinden und CRUD -Operationen auszuführen. Im Allgemeinen gehören alle datenbankbezogenen Code und Dinge zur Datenzugriffsschicht. Manchmal verwenden Menschen eine plattformunabhängige Datenzugriffsschicht, um Daten von verschiedenen Datenbankanbietern abzurufen.

Weitere Details - https://www.c-sharpcorner.com/uploadfile/dacca2/undstand-3---Schitecture-in-c-sharp-net/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top