AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Einstellungen lesen und "durchreichen" ?
Thema durchsuchen
Ansicht
Themen-Optionen

Einstellungen lesen und "durchreichen" ?

Ein Thema von khh · begonnen am 30. Apr 2015 · letzter Beitrag vom 1. Mai 2015
Antwort Antwort
Seite 1 von 2  1 2      
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#1

Einstellungen lesen und "durchreichen" ?

  Alt 30. Apr 2015, 12:44
Hallo zusammen,
ich überlege gerade, ob es Sinn macht diverse (Einstellungs)-Werte aus der Datenbank konzentriert im "Startformular" zu lesen und an die einzelnen anderen Formulare und Klassen "durchzureichen".
Oder sollen die Werte in der jeweiligen Klasse selbst aus der DB gelesen werden.

Was ist wohl effizienter?
Danke für eure Meinungen.

Gruss KH
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Einstellungen lesen und "durchreichen" ?

  Alt 30. Apr 2015, 13:41
Wie üblich, es kommt darauf an. Wenn der Anwender nur mal kurz die Versionsinformation benötigt, und dann warten muß, bis die letzte exotische Funktion das 42te Druckformat geladen hat, das kommt gut. Auf der anderen Seite, jeder DB-Aufruf kostet, egal wieviele Daten durch die Leitung gehen, darum so viele Daten wie möglich pro Aufruf abholen.
Mein Ansatz, zuerst das absolut notwendige, und während der Benutzer noch staunt, in einem eigenen thread den Rest abholen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Einstellungen lesen und "durchreichen" ?

  Alt 30. Apr 2015, 13:48
Von welchen Daten-"Mengen" reden wir den...

Ich lade immer alle Einstellungen beim Start...

Das macht blub und alles ist da... Nicht Messbar.

Und natürlich NICHT im Formular...

Mavarik
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: Einstellungen lesen und "durchreichen" ?

  Alt 30. Apr 2015, 14:48
Also wenn es um Resourceneffizienz geht, können 100, 1000 oder 10000 Einstellungen unproblematisch sein, wenn es ein Einzelplatzsystem ist (mit lokaler Datenhaltung). Von Effizienz kann man trotzdem nicht reden.
Rechnet man sowas mal Anzahl der Nutzer und mal Anzahl der Starts pro Tag, kann der Server schon mal stottern.
Bei Schichtbeginn ist dann u.U. die berühmte "Tasse Kaffee" fällig. 100 oder so User die sich pünktlich um 8:30 Uhr anmelden, ein Traum.

Laden nach Bedarf halte ich für besser. Es dürfte auch dem Code und der Codelesbarkeit gut tun. Ob man es dann für jeden i-Punkt macht oder je Maske, ist ein weiteres Detail.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#5

AW: Einstellungen lesen und "durchreichen" ?

  Alt 30. Apr 2015, 15:11
Also im Prinzip könntest du ein Singleton oder ein durchgereichtes Objekt verwenden, das die Einstellungen faul nachlädt.
Das faule Nachladen brauchst du gar nicht sofort implementieren, wenn du ein ordentliches Interface definierst. Lade die Einstellungen erst einmal ganz und implementiere das andere wenn du es brauchst.

Auf jeden Fall würde ich das Laden der Einstellungen im Code von der Stelle entkoppeln, wo die Einstellungen benutzt werden.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#6

AW: Einstellungen lesen und "durchreichen" ?

  Alt 30. Apr 2015, 16:14
Ich mach das meistens so: Beim Programmstart meiner Projekte (die mit Frames arbeiten), werden lediglich diejenigen Einstellungen aus der DB gelesen, die sozusagen global gültig sind wie Datenbankdatei, Benutzer-Id, Berechtigungs-Level, Fenstergröße und -position und dergleichen. Beim Aufruf der diversen Frames werden die Einstellungen für den jeweiligen Frame im Code der Frame-Unit ausgelesen. Wenn der Frame z.B. ein DBGrid beinhaltet, werden beim Erzeugen des Frames – bei meinen "größeren" Projekten werden Frames ressourcenschonend stets erneut instanziiert, bevor sie angezeigt werden, und nach dem Ausblenden wieder freigegeben – auch immer gleich die Einstellungen geladen und beim Zerstören wieder zurückgeschrieben. Beispiel zum Einstellen von DBGrid-Spaltenbreiten:
Delphi-Quellcode:
// ---------- Einstellungen lesen ---------- Privat
Procedure TFrame_Partner.EinstellungenLesen;
Var
  i : Integer;
  Aus : String;
begin
  For i := 0 To DBGrid_Partner.Columns.Count -1 Do
  Begin
    Aus := IntToStr(i);
    If i < 10 Then Aus := '0' + Aus;
    Aus := 'PARTNER_' + Aus;
    DBGrid_Partner.Columns[i].Width := DatMod.Qset_BTab.FieldByName(Aus).AsInteger;
  End;
  DBGrid_Partner.SetFocus;
end;

// ---------- Einstellungen schreiben ------ Privat
Procedure TFrame_Partner.EinstellungenSchreiben;
Var
  i : Integer;
  Aus : String;

begin
  DatMod.Qset_BTab.Edit;
  For i := 0 To DBGrid_Partner.Columns.Count -1 Do
  Begin
    Aus := IntToStr(i);
    If i < 10 Then Aus := '0' + Aus;
    Aus := 'PARTNER_' + Aus;
    DatMod.Qset_BTab.FieldByName(Aus).AsInteger := DBGrid_Partner.Columns[i].Width;
  End;
  DatMod.Qset_BTab.Post;
end;

// ---------- Einblenden ------------------- Public
Procedure TFrame_Partner.Einblenden;
begin
  Self.Align := alClient;
  Self.Visible := True;
  EinstellungenLesen;
end;

// ---------- Ausblenden ------------------- Public
Procedure TFrame_Partner.Ausblenden;
begin
  EinstellungenSchreiben;
  Self.Align := alNone;
  Self.Visible := False;
end;
Nachdem von der Mainform aus das jeweilige Frame-Objekt erzeugt worden ist, wird die Einblenden-Methode aufgerufen, vor dem Zerstören des Frames die Ausblenden-Methode.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Einstellungen lesen und "durchreichen" ?

  Alt 30. Apr 2015, 18:48
Also wenn es um Resourceneffizienz geht, können 100, 1000 oder 10000 Einstellungen unproblematisch sein, wenn es ein Einzelplatzsystem ist (mit lokaler Datenhaltung). Von Effizienz kann man trotzdem nicht reden.
Rechnet man sowas mal Anzahl der Nutzer und mal Anzahl der Starts pro Tag, kann der Server schon mal stottern.
Bei Schichtbeginn ist dann u.U. die berühmte "Tasse Kaffee" fällig. 100 oder so User die sich pünktlich um 8:30 Uhr anmelden, ein Traum.

Laden nach Bedarf halte ich für besser. Es dürfte auch dem Code und der Codelesbarkeit gut tun. Ob man es dann für jeden i-Punkt macht oder je Maske, ist ein weiteres Detail.
10000 Einstellungen... Für ein Programm... Von mir aus nehmen wir das mal an... Was sind das?

Boolean? Byte? Integer? Mal nen String?

Lass die 10000 Einstellungen mal 50KB sein... Die lese ich auch von einem Server gerne von 100 Leuten gleichzeitig...

Ohne das ich auch nur eine Verzögerung merken würde...
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#8

AW: Einstellungen lesen und "durchreichen" ?

  Alt 30. Apr 2015, 20:15
Ohne das ich auch nur eine Verzögerung merken würde...
Da geht's nun wirklich nicht um das, was man als große Datenmengen bezeichnen könnte.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#9

AW: Einstellungen lesen und "durchreichen" ?

  Alt 30. Apr 2015, 20:26
Das können internationalisierte Labels von ein paar hundert Masken / Grids sein, Spaltenbreiten, Formatmasken, Lookupdefinitionen, etc. pp., diese Daten können individuell also pro user unterschiedlich sein.
Das ganze kann ich "schlechten" Netzen stattfinden, die auch von anderen Programmen zugemüllt werden und technisch veraltet sind.
Und es gibt auch Unternehmen, die mehr als 100 Mitarbeiter beschäftigt haben.
Diese Daten müssen vom Server auch zusammengesucht werden, bevor sie dann durchs Netz gehen.
Ich habe für mich noch nie die Bytes zusammenrechnen müssen, weil es noch keinen Bedarf gab.
Wie auch immer, es ging um Effizienz. Alles auf einen Schlag zu laden ist nicht effizient.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Einstellungen lesen und "durchreichen" ?

  Alt 30. Apr 2015, 21:42
Wie auch immer, es ging um Effizienz. Alles auf einen Schlag zu laden ist nicht effizient.
User definierte Einstellungen werden doch nicht auf dem Server gespeichert, sondern beim User...

Was bedeutet Effizienz...?
Wenig Netzwerk Belastung oder wenig nachladen?
Wenig Programmcode?
Wenig Memory?
Einfache Programmierung?

Ich kann für alle Einstellungen für jedes Feld ein Feld in einer Datenbank reservieren...
Oder ich nehme mir einen netten Record, schreibe den in einen gepackten Stream und dann in ein Blob-Feld alles auf einmal...
Die Userdaten schreibe ich in das User-Datenverzeichnis mit der gleichen Routine gepackt weg...

Fertig...

Wahrscheinlich dauert das öffnen der Datenbank länger als das lesen des blob-Feldes...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:11 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