Frage

Ich habe an einem Projekt gearbeitet, dass Geräte eine dreistufige Architektur mit dem folgenden Entwurf:

  1. Presentation Layer - Verwendet PHP mit einem MVC-Framework zu Griff Frontend Präsentation und Geschäftslogik. Diese Schicht macht Anrufe auf der Dienstschicht, die die Daten zugreift.
  2. Data Access Layer - Verwendet C # .NET und wird in den Service, Business-Logik getrennt und Data Layer. Genannt durch die Präsentationsschicht. Aufrufe an die Datenbank und serialisiert Antworten auf die Presentation Layer zurückzukehren.
  3. Data Layer - Die Datenbank. Bietet alle Daten für die beiden oben genannten Schichten.

Ich verstehe, dass eine dreistufige Ansatz kann dazu beitragen, die Sicherheit, da es noch kein Zugriff auf die Daten, wenn die Präsentationsschicht beeinträchtigt wird. Obwohl dies wahr ist, scheint es, wie dieser Ansatz ist es ein bisschen zu verkomplizieren, zumal ich gezwungen bin, zwei Modelle für das gleiche Objekt in den ersten beiden Schichten zu schreiben.

Also meine Frage: Ist dies eine schlechte Implementierung einer dreischichtigen Architektur? Wenn ja, wie es verbessert werden könnte? Was sind die Nachteile, wenn überhaupt, nur eine MVC-Implementierung mit, die den Zugriff auf die Datenbank hat? Was approache (n) haben Sie für Ihre Web-Anwendungen verwenden?

Danke für die Hilfe!

War es hilfreich?

Lösung

Es scheint mir, wie Ihre 3 Ebenen sind die gleichen wie View, Controller Modell. Wenn Ihr PHP ist vor allem Anrufe an Ihre # 2 Schicht zu machen, dann würde ich glaube selbst nicht MVC zu sein braucht, wenn Sie eine sehr komplizierte Präsentationsschicht haben, dass sich in MVC organisiert, zum Beispiel werden sollten, wenn Sie Navigation oder Benutzer kompliziert haben Authentifizierungslogik.

Andere Tipps

Es gibt nichts, erforderlich in der Programmierung. Aber es gibt eine Reihe von Praktiken, die von Jahren als etwas-you-can-Follow-to-get-besser-Ergebnisse prooven wurden. N-Tier-Trennung ist nur einer jener Praktiken.

http://en.wikipedia.org/wiki/Multitier_architecture

Ihre Beschreibung folgt die Beschreibung in dem Wiki, so -. Es geeigneter Weg ist 3-Tier-Anwendung zu implementieren

Aber denken Sie daran, was Sie tun sollten, nichts tun - folgen Sie einfach so, wie es für Sie bequem ist. Und in Zukunft werden Sie Ihre eigene Reihe von Praktiken, die Arbeit für Sie speziell haben.

Ich denke, Ihre Komplikation rührt von der Tatsache, dass Sie mit PHP und .NET, die nicht direkt kompatibel. Wenn Sie einer von denen, eliminiert (nur verwendet, PHP oder nur verwendet .NET), die Dinge vereinfachen würde. Ansonsten finde ich Ihnen einen guten Ansatz verwenden.

Der Wert des Ansatzes ist nicht nur für Sicherheit, sondern erleichtert auch die Wartbarkeit.

Ich bin nicht sicher, ich verstehe die Sorge: „vor allem, weil ich gezwungen bin, zwei Modelle für das gleiche Objekt in den ersten beiden Schichten zu schreiben.“ Dies scheint zu sein, weil Sie zwei verschiedene Programmiersprachen für die Benutzeroberfläche und das Back-End. Ich vermute, C # „Datenzugriffsschicht“ enthalten ein vollständiges Objektmodell, die Sie dann in Ihrem Frontend zu replizieren.

Das Problem scheint zu sein, dass Sie zwei mittlere Ebene, die sie spiegeln, weil Sie zwei Sprachen verwenden, nicht, dass Sie eine n-Tier-Architektur verwenden

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