AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Konzeption mehrschichtiger Anwendungen
Thema durchsuchen
Ansicht
Themen-Optionen

Konzeption mehrschichtiger Anwendungen

Ein Thema von DeddyH · begonnen am 18. Jan 2009 · letzter Beitrag vom 18. Jan 2009
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#1

Konzeption mehrschichtiger Anwendungen

  Alt 18. Jan 2009, 17:35
Datenbank: egal • Version: egal • Zugriff über: egal
Ich bräuchte mal Eure Meinung. Ich möchte eine Anwendung schreiben, die folgendermaßen aufgebaut ist:
- Datenbank
- Zugriffsframework (OPF)
- Frontend

Das Frontend hat dabei keinen direkten Zugriff auf die DB, sondern nur über die Klassen des Frameworks. Das gibt es öfter und bedarf IMHO keiner weiteren Erläuterung. Ich frage mich lediglich, ob Folgendes sinnvoll ist:
Der Zugriff des Frameworks auf die DB erfolgt abfragetechnisch über Views und DML über SPs und zwar ausschließlich. Nirgends wird direkt auf die Tabellen zugegriffen.
Ich hatte das erst anders und musste dann feststellen, dass bei einer Umstrukturierung der DB das komplette OPF umgebaut werden musste. So wie beschrieben könnte es im Idealfall sein, dass lediglich auf DB-Seite Änderungen erfolgen müssen. Und im Nicht-Idealfall sind nur ein paar Parameter im OPF zu ergänzen/ändern/löschen.

Was meint Ihr, ist das sinnvoll so, oder habe ich da einen riesigen Denkfehler drin?

Danke fürs Lesen.

[edit] Zur Veranschaulichung der Frage die relevanten Stellen fett hervorgehoben [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Konzeption mehrschichtiger Anwendungen

  Alt 18. Jan 2009, 18:11
Die Abgrenzung des Datenbankzugriffs entspricht meiner Vorgehensweise. Dabei verfolge ich zwei Prinzipien:
1. Aufgaben/Gewaltenteilung
2. Abstraktion

Dadurch, das Du nur 'virtuelle Tabellen' hast (nämlich deine View), sowie Operatoren darauf (SP), erlaubt es Dir, das zugrundeliegende DB-Konzept nachträglich noch zu verändern/erweitern. Ich habe z.B. eine ganze Reihe kleiner Prüf- und Loggingoperationen in den SP verbaut, die ich im laufenden Betrieb ein- bzw. wieder ausbauen kann.

Ich gehe beim MSSQL sogar soweit, 'Updateable Views' zu verwenden, womit das Prinzip der virtuellen Tabellen 100%ig umgesetzt ist.

Zum OPF: Ich würde eine 'Select'-Operation einbauen bzw. die Möglichkeit bieten, Queries direkt durchzureichen. Das ist bei der Darstellung von Listen, Grids etc. sehr hilfreich, auch wenn es den 3-Tier-Gedanken pervertiert. Die Entwicklungszeit wird hier jedoch drastisch reduziert. Wichtig ist nur, das eine 1:1 Beziehung zwischen Datarecord einer Query und Objekt (z.B. durch eine ID) gewährleistet ist, und das keinerlei Modifikationen direkt durchgeführt werden: Deine Business Logic ist ja im OPF, und die bekommt davon dann nichts mit.

Um Deine Frage zu beantworten: In meinen Augen ist diese Vorgehensweise entscheidend für eine robuste, wartbare und leicht veränderbare Lösung. Ich bin mittlerweile auch von 100% OPF weggekommen, weil man bei jeder Kundenanfrage ('Wir bräuchten noch die Schuhgröße des Kunden im Kundenstamm') die Mittelschicht aufgebohrt werden soll. Das muss sie aber eigentlich nur dann, wenn sich die Business Logic ändert. Für reine Nutzdaten ist das imho überflüssig (Prinzip der Gewaltenteilung).

Ich habe also hartkodierte Eigenschaften, die für die BL wichtig sind, und Nutzdaten als Key-Value-Paare (Dictionary) in meinen logischen Objekten. Die Keys der Nutzdaten entsprechen direkt dem Feldnamen meiner Objekt-View, sodaß sich Erweiterungen an dieser ('Schuhgröße') direkt und ohne Änderungen an der Mittelschicht im Frontend abgebildet werden können.

Gruß
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#3

Re: Konzeption mehrschichtiger Anwendungen

  Alt 18. Jan 2009, 18:19
Danke für Deine Antwort, ich liege also nicht so verkehrt . Da ich noch ziemlich am Anfang stehe, ist das ganze System noch nicht sonderlich ausgefuchst, aber Dein Post zeigt mir, dass ich wohl auf dem richtigen Weg bin .
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#4

Re: Konzeption mehrschichtiger Anwendungen

  Alt 18. Jan 2009, 19:54
Hallo Detlef,

vielleicht gibt Dir mein Thread noch mehr Informationen zu dem Thema, da ich gerade selber an so einem Konzept arbeite.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#5

Re: Konzeption mehrschichtiger Anwendungen

  Alt 18. Jan 2009, 20:09
Hallo Rolf, den Thread hatte ich auch bereits mit Interesse verfolgt. Vielleicht können wir bei neuen Erkenntnissen ja querverlinken, dann haben wir beide etwas davon
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#6

Re: Konzeption mehrschichtiger Anwendungen

  Alt 18. Jan 2009, 20:14
Auf jeden Fall gerne.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#7

Re: Konzeption mehrschichtiger Anwendungen

  Alt 18. Jan 2009, 20:23
Deal
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz