AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen .NET-Sprachen Unterschiedliche Datenquellen. Wie vorgehen?
Thema durchsuchen
Ansicht
Themen-Optionen

Unterschiedliche Datenquellen. Wie vorgehen?

Ein Thema von FredlFesl · begonnen am 1. Mai 2011 · letzter Beitrag vom 1. Mai 2011
Antwort Antwort
FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#1

Unterschiedliche Datenquellen. Wie vorgehen?

  Alt 1. Mai 2011, 10:46
Hallo,

Ich habe eine dot.net / C# - Frage

Ich muss Daten von unterschiedlichen Quellen laden, z.B. einer Datei, Shared Memory, TCP, SQL-Datenbank. Dabei lese ich immer genau einen Record.
Für SQL wäre das also sowas wie ein "SELECT FIRST 1 <Felder> FROM <Tabelle> WHERE UniqueKey = :UniqueKey"
Bei TCP würde man die Daten irgendwie von einem Client abrufen (Query / Response - Mechanismus)
Bei Shared Memory liegen die Daten für den UniqueKey schon im Speicher
Bei einer Datei würde ich die Zeile filtern, die den UniqueKey enthält
...
Die Daten sollen nach dem Einlesen homogen weiterverarbeitet werden. Ich dachte da an eine Datatable.

Meine Frage lautet: Wie soll ich die unterschiedlichen Datenquellen implementieren? Soll ich für jede Datenquelle einen IDataReader bauen? Oder gibt es eine bessere Möglichkeit?

Für jeden Denkanstoß wäre ich dankbar. Die Implementierung ist nicht das Problem.
Das Bild hängt schief.

Geändert von FredlFesl ( 1. Mai 2011 um 18:32 Uhr)
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#2

AW: Unterschiedliche Datenquellen. Wie vorgehen?

  Alt 1. Mai 2011, 11:00
Du könntest verschiedene Klasen definieren, die alle ein Interface implementieren, das z-B.So aussieht:
Delphi-Quellcode:
type
IDatenzugriff=interface
function LeseDatensatz(UniqueKey:String);
end;

type
TTCPDatenZugriff=class(IDatenzugriff)
public
  function LeseDatensatz(UniqueKey:String)
end;

implementation
function TTCPDatenZugriff.LeseDatensatz(UniqueKey:String)
begin
  //Hole Datensatz
end;

procedure VerwendeDatenzugriff();
var
 Datenzugriff:IDatenzugriff;
 Datensatz:TDatensatz;
begin
  if Zugriffsmethode=TCP then
  begin
    Datenzugriff=TTCPDatenZugriff.Create;
  end;

//...

  Datensatz:= Datenzugriff.LeseDatensatz('UniqueKey');

//...

end;

end;
Ich hab jetzt kein Delphi zum ausprobieren, aber so ungefähr
  Mit Zitat antworten Zitat
FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#3

AW: Unterschiedliche Datenquellen. Wie vorgehen?

  Alt 1. Mai 2011, 15:10
Hi,

Es geht um Dot.Net. Klar, so könnte man das machen. Aber ich möchte die Lösung so gestalten, das sie nahtlos in das Dot.Net DataProvider / Databinding - Konzept passt, sodaß man mit der richtigen Implementierung gleich eine ganze Reihe weiterer Aufgaben erschlägt.

Beispielsweise würde ich in Delphi versuchen, ein TDataset-Derivate zu erzeugen, damit ich alle datensensitiven Steuerelemente verwenden kann.
Das Bild hängt schief.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Unterschiedliche Datenquellen. Wie vorgehen?

  Alt 1. Mai 2011, 17:18
Es geht um Dot.Net.
Wo stand das? Der einzige (indirekte) Hinweis, war "IDataReader".

Oder bin ich blind, und das stand wirklich konkret in deiner Frage.

Edit: Ahhh, ok. NET-Sprachen war das Ober-Thema. Sorry.
  Mit Zitat antworten Zitat
FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#5

AW: Unterschiedliche Datenquellen. Wie vorgehen?

  Alt 1. Mai 2011, 18:31
Nee, nee. Hast schon Recht. Hätte ich in einem DELPHI-Forum nochmals hinschreiben sollen.
Das Bild hängt schief.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#6

AW: Unterschiedliche Datenquellen. Wie vorgehen?

  Alt 1. Mai 2011, 20:48
Du wirst Zugriff auf SharedMem und TCP nicht in das DataProvider-Konzept zwängen können.

Ich würde tatsächlich wie WM_Close vorgeschlagen hat ein Interface definieren, welches den Datenzugriff kapselt.

Genauso würde ich, wenn es Sinn macht, lediglich ein Interface für die eigentlichen Daten definieren.

In .NET kannst Du Databinding ja auch ohne weiteres gegen beliebige Objekte (oder eben Interfaces) definieren, und genau hiervon würde ich gebrauch machen. Dann brauchst Du Dich auch nicht mit dem DataSet rumschlagen. Ausser dass es langsam und nicht threadsafe ist und damit ausschliesslich Probleme beschert ist es nämlich nicht wirklich zu was gut.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#7

AW: Unterschiedliche Datenquellen. Wie vorgehen?

  Alt 1. Mai 2011, 22:01
Ah. Stimmt ja. Ich bin ja unter Dot.Net überhaupt nicht auf TDataset bzw. den Pendant angwiesen. Na dann mach ich das doch einfach so.

Danke!
Das Bild hängt schief.
  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 12:41 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