2009-07-29 8 views
5

Ich werde in Kürze ein paar Web-Anwendungen entwerfen. Sie werden wahrscheinlich in asp.net mvc getan werden.Sollte mvc Web-Anwendungen 3-Tier sein?

In meinen bestehenden Web-Anwendungen, in Delphi getan, ist die Datenzugriffsschicht in eine komplett separate Anwendung aufgeteilt, die manchmal auf einem anderen Server läuft. Dies geschieht mehr für die Wiederverwendung von Code als für die Architektur. Dies wird kein Faktor in der nächsten App sein, da es komplett neu sein wird.

Haben Sie eine separate Datenzugriffsanwendung in einer mvc app? Ich werde bereits die Business-Klassen durch die Verwendung von MVC trennen, und ich werde ein ORM verwenden, um die DB-Persistenz zu machen.

Bearbeiten: Nur um zu klären; Ich verwende den Begriff Tier, um auf separate physische Anwendungen zu verweisen, etwas mehr als nur eine logische Trennung oder Ebene.

+2

Wenn Sie Business Classes und DB für Persitance getrennt haben, haben Sie bereits mindestens 3 Ebenen. GUI/Logik/DB - dies ist 3-stufig, so dass Sie nicht n <3 erhalten. Führen Sie eine zusätzliche Stufe ein, wenn Sie mehr Modularisierung benötigen - aber das hängt ganz von Ihrer Anwendung ab. –

Antwort

6

Der Begriff „Tierin meiner Erfahrung bezieht sich allgemein auf physikalische Anwendung Trennungen z.B. Client Tier & Server Tier.

MVC - bezieht sich auf 3 "Schichten" mit der Sorge, Trennung um die 3 betrifft es Details Model (Daten), View (UI), Controller (App Logic).

Nun, da ich diese Unterscheidung in Bezug auf meine Terminologie gemacht habe ..

Wird mit einem separaten Datenzugriffsanwendung Overkill in einem MVC-app?

Ich würde sagen Nein (wieder abhängig, was Sie durch die Anwendung bedeuten), es nicht übertrieben ist, wie es kann in der Tat führen zu einem mehr wartbar System. Ihr ORM wird möglicherweise erlauben für neue Datenzugriffsoptionen, die eingesteckt werden, aber was ist, wenn Sie ein neues ORM hinzufügen möchten? Mit einem klar getrennten Data Access Layer (DAL) können Sie in diesem Aspekt Ihrer Anwendung wesentlich flexibler arbeiten.

Auf der anderen Seite, je nach Maßstab und Vision für die Anwendung eine vollständig stand alone Data Access-Option zu schaffen, kann Overkill sein, aber in einer Nussschale Trennung der DAL in verschiedenen Baugruppen ist sehr eine empfohlene Praxis in der Zusammensetzung einer Anwendung, die das MVC-Muster implementiert.

Hoffe, das hilft, wenn Sie mehr Tiefe benötigen, kommentieren.

0

Toller Kommentar Tobias.

Ich sage, fügen Sie genug Schichten, so dass es für Sie Sinn macht und es einfacher zu pflegen. Auch um eine Trennung von Sorgen zu vermeiden.

2

Nun gues ich es ein wenig davon ab, ob Sie sprechen Ebenen (pysical) oder Schichten (logisch/Projekte).

In Bezug auf die Schichtung - Sie könnten etwas wie s # arp Architektur (code.google.com/p/sharp-architecture/) für ein Beispiel betrachten, wie sie es tun (sie haben einen ziemlich maximalen Ansatz zum Layering genommen).

Ein Beispiel für minimalistische Ansichten hier einen Blick auf Ayende Blog nehmen: ayende.com/Blog/

In Bezug auf Ebene - Ich denke, unnötig nur Ihre Leistung getroffen wird zusätzliche Ebene und setzt Everthing über den Draht Hinzufügen , es sei denn, Sie müssen dies aus Kapazitätsgründen tun. Holen Sie die Schichten richtig, und sie trennen sie in teirs, wie Sie Kapazität anpassen müssen (sollte nicht zu viel Refactoring nehmen, wenn Sie Ihre Interessen gut getrennt haben).

Verwandte Themen