Autor Beitrag
Passi077
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 125

Win XP
D7 Pers
BeitragVerfasst: Di 28.02.06 16:43 
Hi,

hat jemand Links zur Erklärung der sogenannten 3 Schichten Architektur/Struktur?

Ich finde via Google immer nur mehrschichtige Strukturen, unser Lehrer will uns aber die 3-Schichten Struktur beibringen. Er hüllt sich aber in Schweigen wenn ich es gerne etwas genauer hätte -.-

Ich weiß bisher nur das es die folgenden 2 Schichten beinhaltet: Oberfläche + Steuerung.

Ich hoffe jemand hat ein paar Links oder kann mir das selber kurz erklären. Wir müssen nämlich in einem Projekt diese Struktur anwenden und da unser Projekt sehr komplex wird, wäre es nicht von Vorteil wenn wir nochmal alles umgestalten müssen weil wir diese Architektur nicht richtig benutzt haben..

Danke + Grüße
Passi
Gandi22
Hält's aus hier
Beiträge: 8

Win 2000
Delphi 5 Prof.
BeitragVerfasst: Di 28.02.06 16:52 
Gurgle mal nach Suche bei Google 3 TIER MODEL, ich denke das ist, was Dein Leherer meint.
Im unterschied zur klassischen 2-Tier Architektur (ein Clientprogramm kommuniziert mit einem Serverprozess - z.B. eine Anwendung mit einer Datenbank) wird hier eine weitere funktionale Schicht eingeschoben (z.B. ein Clientprogramm kommuniziert mit einem WebService, der WebService kommuniziert mit einer Datenbank).
Der Client kümmert sich in einer idealen Welt dann nur um die Darstellung, der WebService um die Funktionalität und die Datenbank um die - wer hätte es gedacht - Daten.

Hope this helps!

_________________
Peace, Gandi
MiChri
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 28

Win XP, Win 2000, Win 98, Linux
D4 Prof
BeitragVerfasst: Di 28.02.06 17:01 
Hallo
Das 3-Tier ist nach dem 3 Schichten-Modell aufgebaut. Das 3-Schichten-Modell an sich sagt nur, das man GUI, Logik und Datenhaltung separat halten sollte. Also nicht im OnEnter Ereignis die Daten aus der GUI zusammensammeln und irgendwas berechnen.
Der Vorteil: Wenn man zum Beispiel die Daten anders speichern will muss man nur eine Schicht ändern (zum Beispiel um von einer Datenbank zu XML-Datenhaltung zu wechseln).
Aber wie immer ist das Architekturschema idealisiert und nur mit viel Disziplin (=> Aufwand) konsequent realisierbar. Aber bei 10 000 Zeilen macht es schon Sinn.

Gruß
Christian
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Di 28.02.06 17:19 
Jetzt komm ich mit mein Sempf:
2-Schichten: Clientprogramme, die auf eine Datenbank zugreifen. Die 'Geschäftsregeln' sind in jedem Client hinterlegt. Die EXE im PC auf jedem Schreibtisch einer weltumspannenden Firma weiss also, das zu Auslagen keine Mehrwertsteuer hinzugezählt werden soll, zu Dienstleistungen aber wohl (zum Beispiel).

Wenn sich nun das Gesetz zur Besteuerung von Auslagen ändert, müssen alle 89.713 Clients ausgetauscht werden. Das ist blöd, weil Heribert Kassupke im Urlaub ist und keiner sein Passwort kennt. Desweiteren kann man sicher sein, das nach Beendigung dieses Upgrades das nächste schon überfällig ist, weil wir in Deutschland leben und das hier nunmal mit den Steuergesetzen so is.

3-Schichten: Man packt die 'Geschäftsregeln', also wie Daten verwurstet werden, in eine zentrale Instanz, die Mittelschicht. Der Client zieht sich jetzt nur die 'versteuerten Ausgaben' und muss nicht wissen, wie die heute berechnet werden. Das hat den Vorteil, das der Client ersten langlebiger und zweitens schlanker werden kann, da zumindest die Geschäftsregeln schon weggekürzt (ausgedünnt) werden. Das kann man soweit treiben, das der Client eigentlich nur eine GUI ist, also nur die Daten visualisiert. Ein Web-Browser ist so ein 'thin-client'.

Von so einer Mittelschicht kann es nun mehrere geben, weil z.B. die Versteuerungseinheit nicht weiss, ob und wie die Materialbeschaffung auf das neue EU-Gesetz reagiert. Wenn man größere Systeme konzipiert, wird man die Mittelschichten modular aufbauen, sodaß die Wartbarkeit gewährleistet ist.

Eine Mittelschicht kann nun heute erstmal auf einer Frickel-DB aufsetzen, sagen wir MySQL. Wenn dann mal Datensicherheit und echte Performance gefragt sind, kann man die DB durch eine echte DB ersetzen, ohne das die Clients etwas davon mitbekommen. Man kann die Daten auch auf verschiedenen Systemen speichern: Die Kunden auf dem DB2-Server, die Rechnungen unter MSSQL, wie man grade Bock hat.

Das Internet mit seinen Webservices ist ein Paradebeispiel für dies N-Tier Architektur (N>=3). Mit meinem Client greife ich einen Webservice (Mittelschicht) ab, der mir die augenblickliche Temperatur in Kleinwüferode anzeigt. Dieser Webservice widerum bezieht seine Daten von dem Service des DWD (Deutscher Wetter Dienst), der die aus einer DB saugt. Wer mitgezählt hat, kommt auf vier Schichten (Icke, der Webservice, der Service vom DWD und die DB).


Das haben Dir die anderen beiden eigentlich auch schon erzählt, aber ich hatte zu viel von den Sempf und der musste einfach wech.

_________________
Na denn, dann. Bis dann, denn.
Passi077 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 125

Win XP
D7 Pers
BeitragVerfasst: Di 28.02.06 17:46 
:D

Danke für eure Antworten, habt ihr schön erklärt ;) !

Ok, das Prinzip habe ich verstanden, und wie man das nun auf Systeme bezieht die Daten verwalten/berechnen müssen auch.

Aber: Wir sollen das ganze in einem Spiel (=eine Anwendung) unterbringen.. Muss ich mir das jetzt so vorstellen:

Ich hab 3 Units: Oberfläche, Aktionen, Steuerung

Sobald ich eine auf der Tastatur oder auch auf der Oberfläche drücke (um z.B. die Spielfigur auf der Oberfläche nach links zu bewegen), starte ich eine Methode in der Steuerungs-Unit, z.B. Player.Steuerung.bewegeLinks() ..

diese Methode ruft dann in der Aktionen-Unit von mir aus die Methode Player.Aktionen.bewegeLinks auf und in dieser Methode wird dann noch die Methode Player.Oberfläche.Zeichne aufgerufen :shock: ?

Fände ich dann doch ganz schön umständlich.. ich hoffe, ihr berichtigt meine Überlegungen ;)!

Grüße
Passi
MiChri
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 28

Win XP, Win 2000, Win 98, Linux
D4 Prof
BeitragVerfasst: Di 28.02.06 18:04 
Hallo
Schön, dass wir dir helfen konnten. Du hast das Prinzip verstanden, und deine Ansätze sind gut.
Und...
Es ist so aufwändig, ausserdem hast du vergessen, das das "bewegeFigur()" noch ein "änderePosition()" an die Daten-unit/klasse senden muss. Die Datenklasse kann dann ein "esHatSichWasGeändert()" an die GUI (über die LogikSchicht) schicken, so dass die sich die Daten dann wieder über die Logik(steuerungs) Schicht holt um endlich etwas anzuzeigen.

Wir haben nie gesagt, das es einfach, performant oder immer sinnvoll ist.

Unter Lehrern ist sowas meist ein Schlagwort das für soviel wie "gescheite Struktur" steht. Ausserdem kann man das ganze recht einfach überprüfen, was das korregieren einfacher macht. Ich glaube nicht, dass ein durchschnittlicher Lehrer jemals nach einer strikten Architektur (geschweige denn MVC) ein größeres Projekt durchgezogen hat.

Gruß
Christian
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: So 05.03.06 17:52 
Also ist ModellViewController denn nun auch 3 Tier oder zählt das nur für Datenbanken?

Super Erklärung, ich bedanke mich, ja zu den Leerkörpern sage ich mal nichts :wink: