AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Theoretische Frage zum Thema Middleware
Thema durchsuchen
Ansicht
Themen-Optionen

Theoretische Frage zum Thema Middleware

Ein Thema von ice.icewing · begonnen am 8. Jan 2007 · letzter Beitrag vom 9. Jan 2007
Antwort Antwort
ice.icewing

Registriert seit: 10. Feb 2005
17 Beiträge
 
#1

Theoretische Frage zum Thema Middleware

  Alt 8. Jan 2007, 14:22
Datenbank: noch keine • Zugriff über: noch gar nicht
Theoretische Frage zum Thema Middleware.

Ich habe ein fertiges und funktionierendes Programm an dem ich nur ungern größere Änderungen vornehmen möchte. Dieses Programm nutzt ein propritäres DBMS für seine Daten. (kein SQL)

Frage: Ist es a) Möglich und b) Sinnvoll eine Software zu schreiben die unterhalb der Anwendung sitzt und als Middleware zwischen der Anwendung und einer SQL-Datenbank agiert.

Wenn es möglich ist stellt sich die Frage, wie komme ich an das ran was an Anfragen aus der Anwendung raus kommt und wie Bekomme ich eine Anwort wieder in das Programm zurück.
Im Grunde wie Emuliere ich für die Bestehende Anwendung ihre gewohnte Datenbank.

Ich hoffe ich kann hier ein paar Denkanstöße bekommen, oder aber ein klares „das ist keine gute Idee“ worauf hin ich über andere Lösungswege nachdenken müsste. Ich bin auch für Alternative Lösungsvorschläge offen.

Gruß icewing
J. Renner
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Theoretische Frage zum Thema Middleware

  Alt 8. Jan 2007, 14:30
Wie erfolgt die Einbindunge der prop. DB? Als Dll? Dann wäre das ja der Ansatz.
Markus Kinzler
  Mit Zitat antworten Zitat
ice.icewing

Registriert seit: 10. Feb 2005
17 Beiträge
 
#3

Re: Theoretische Frage zum Thema Middleware

  Alt 8. Jan 2007, 14:43
Leider nein.

Ich habe die Sache in ihrer komplexität noch nicht ganz erfasst, aber hier werden Delphikomponenten wie TDataSourge zusammen mit Komponenten von Drittanbietern genutzt. Gefunden habe ich da TDBISamTable, TDBISamQuery und TDBISamSession. Wobei ich mir fast sicher bin, dass das noch nicht alles ist.

icewing
J. Renner
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.889 Beiträge
 
Delphi 12 Athens
 
#4

Re: Theoretische Frage zum Thema Middleware

  Alt 8. Jan 2007, 14:49
Also wir steigen von BDE auf Dbisam und DBExpress um.
Dazu habe ich uns ein eigenes Dataset geschrieben welches
über eine DLL auf die Datenbankzugreift. Es ist noch nicht ganz fertig aber
es wird so sein das man am Ende nur noch eine neue DLL schreiben muss die zwischen
meinem TDataset und einer xbeliebigen Datenbank steht,
wenn ein Umstieg gemacht werden muss.

Wenn du nur eine kleine Anwendung hast würde ich dir Raten oberfläche(View) und Logik(Controller)
in getrennte Programme zu Packen also einen ApllicationClient und einen ApplicationServer die Kommunikation
machst du dann über TCP/IP dann. So brauchst du nicht so viel Code umstellen.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
ice.icewing

Registriert seit: 10. Feb 2005
17 Beiträge
 
#5

Re: Theoretische Frage zum Thema Middleware

  Alt 9. Jan 2007, 15:36
Ich habe gründlich über dein Lösungsvorschlag nachgedacht und das könnte funktionieren. Dennoch ist es (sehr) viel Arbeit. Leider ist die Anwendung alles andere als klein. Daher wollte ich ja eigentlich nicht groß am Quelltext ändern.
Problem: Es gibt in den genutzten Komponenten recht viel das einfach public ist eine Schnittstelle kann man das dann schon nicht mehr nennen. So ganz wohl ich mich also nicht mit der Umarbeitung auf eine dll zu beginnen. Wenn ich fragen darf wie viel Zeit ist in das DataSet investiert wurden bevor man sagen konnte man hat ein vorzeigbares (wenn auch noch nicht entgültiges) Ergebnis?

Ein Punkt fehlt mir allerdings noch. Soll ich die Methoden der jetzigen Komponenten durch welche mit gleichen Namen und gleichen Parametern ersetzten die in die dll führen, wo ich dann fürs erste wieder den Orginalquelltext rein bringe, aber dann die Möglichkeit habe die dll und damit den Quelltext zu ersetzten. Oder den ganzen langen Quelltext des Hauptprogrammes durchgehen und die Aufrufe an den jeweiligen stellen auf die dll umleiten.

icewing
J. Renner
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.889 Beiträge
 
Delphi 12 Athens
 
#6

Re: Theoretische Frage zum Thema Middleware

  Alt 9. Jan 2007, 16:33
Es hat einiges an Zeit gedauert, weil ich auch ein paar Sackgassen hatte und weil ich jede
Menge, mittlerweile unnötigen Code erzeugt habe. Das ist ausserdem mein erstes eigenes Dataset.

Zusätzlich habe ich auch Dummy Klassen TSession und Tdatabase enwerfen müssen. Diese jedoch sind relativ einfach
Sie schleifen einfach die Methoden zu Dll Prozeduren durch und Sie funktionieren.

Das TDataset jedoch ist leider nicht so realisierbar, daß Methoden einfach an die DLL weitergereicht werden.
TDataset macht bereits einige Sachen selbst. Diese Geschichten sind oft privat und mit dem Datasource/Datalink Modell aus der DB Unit verschränkt.
Du must also einen ganzen TDataset Nachfahren wie TTable einer ist nachbauen. Der Datenzugriff erfolgt dann halt in der DLL über
ein TTable Object oder ein TDBIsamTable oder oder oder.

Führ Dir das mal zu Gemüte
http://WWW.gexperts.com/CustomDS.Html
da sind auch brauchbare Sourcen dabei

Die Buffer der Sourcen die er da liefert must du erweitern, weil sie keinen NULL Wert unterstützen und deshalb
für Datenbanken etwas blöd sind. Aber da ist sowieso ne Menge zu tun.

Für das DLL ist es Sinnvoll es dynamisch zu importieren so
das man auch auf mehreren Datenbanken mit einer Anwendung arbeiten kann.

Es ist sinnvoll wenn du die Sourcen von der Datenbank hast die du auf der DLL Seite benutzt.
Andreas
Monads? Wtf are Monads?
  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 22:46 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