n-tier Philosophie
Lude
- programmiertechnik
Hi,
die n-tier Philosophie fordert fÃr die Systementwicklung eine Trennung von beispielsweise Daten-, GeschÃftslogik- und PrÃsentationsschicht. Wenn diese Schichten auf verschiedenen geclusterten Systemen bereitgestellt werden, ist das System skalierbar und fehlertolerant.
So weit, so gut. Von mir erstellte komplexe Datenmodelle sind von einer Datenschicht (gespeicherte Prozeduren, MS SQL Server) umgeben und die PrÃsentationsschicht (IIS-"Web"(CGI, Perl) bzw. VB-Client) ist "OK". Aber die Schicht, die die GeschÃftslogik halten soll, ist nicht da, d.h. diese Logik steckt in den gespeicherten Prozeduren, wo sie m.E. nichts zu suchen hat.
Wie kann man mit IIS, CGI und Perl auf der einen Seite und einem SQL-Datenserver GeschÃftslogik-Komponenten als Schicht "einziehen"? - .NET-Komponenten kommen nicht in Frage und mit einem zweiten Rudel gespeicherter Prozeduren (auf einem zweiten Datenserver) mÃchte ich auch nicht kommen.
Was ratet Ihr mir? Oder wie wÃrdet Ihr die 3-tier Philosophie umsetzen? (Wenn Ihr alles, was Ihr braucht z.V. hÃttet?)
Gruss,
Lude
Moin!
Wie kann man mit IIS, CGI und Perl auf der einen Seite und einem SQL-Datenserver GeschÃftslogik-Komponenten als Schicht "einziehen"? - .NET-Komponenten kommen nicht in Frage und mit einem zweiten Rudel gespeicherter Prozeduren (auf einem zweiten Datenserver) mÃchte ich auch nicht kommen.
Was ratet Ihr mir? Oder wie wÃrdet Ihr die 3-tier Philosophie umsetzen? (Wenn Ihr alles, was Ihr braucht z.V. hÃttet?)
3-tier-Philosophie ist in einer Webanwendung mit DB ja fast schon automatisch drin:
PrÃsentationsschicht -> Ist das generierte HTML+Javascript im Browser
Verarbeitungsschicht -> Steckt in den serverseitigen Skripten
Datenspeicherschicht -> erledigt die Datenbank
Aber in der Tat mischen sich in den Serverskripten gerne zwei Dinge: Einerseits die Generierung der PrÃsentationsschicht, andererseits die Verarbeitung der Daten.
Ich hab' mich selbst damit noch nicht so intensiv beschÃftigt (es wird auf mich zukommen), aber schÃtzungsweise lÃÃt sich diese Vermischung nicht wirklich auflÃsen. Man kann lediglich durch intensiven Einsatz von Bibliotheken (vorzugsweise fÃr die Ausgabe von HTML in Verbindung mit diversen Templates) dafÃr sorgen, dass die Schichten wirklich deutlich voneinander getrennt werden.
Wenn du also eine GeschÃftslogikschicht einziehen willst, dann passt die nirgends so recht dazwischen - die drei Komponenten Browser, Skript und DB trennen sich recht schÃn auf - mehr als drei Schichten mischen sich zwangslÃufig. Du kÃnntest noch einen weiteren Server erÃffnen, um eine neue, schÃn abgegrenzte Schicht einzuziehen (was mÃglicherweise ziemlicher Aufwand ist). Du kÃnntest genausogut die gespeicherten Prozeduren als eigene Schicht betrachten, die der eigentlichen Datenbank noch innerhalb der Datenbank vorgelagert sind (dann hast du "nur" noch ein Betrachtungsproblem, aber keinen besonderen Aufwand mehr).
Aber vielleicht liege ich ja auch total falsch. :)
- Sven Rautenberg