Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi DB-Zugriff über Internet kapseln (JSON oder Webservice) (https://www.delphipraxis.net/150096-db-zugriff-ueber-internet-kapseln-json-oder-webservice.html)

DelphiManiac 7. Apr 2010 09:18


DB-Zugriff über Internet kapseln (JSON oder Webservice)
 
Hallo,

ich habe hier den Tipp bekommen anstatt der direkten Kommunikation mit einem SQL-Server über das Internet einen Webservice oder JSON zu nutzen:
http://www.delphipraxis.net/internal...chungsprogramm

Leider habe ich mit beiden noch keine Erfahrungen, will das aber ändern.
Mir geht es erstmal um das Prinzip, wie kann ich z.B.: über JSON meinen DB-Zugriff realisieren?!

Mir reicht Pseudocode, echtes Pascal wäre aber auch nicht schlimm :-), oder einfach eine Skizze,
wie gesagt, ich will keine fertige Lösung, nur hoffe ich das mir jemand die Funktionsweise ein wenig erläutert.

Vielen Dank schoneinmal.

Gruß
DelphiManiac

Phoenix 7. Apr 2010 09:32

Re: DB-Zugriff über Internet kapseln (JSON oder Webservice)
 
Im Prinzip ist das einfach.

JSON ist Javascript Object Notation. Also im Prinzip eine Art, Objekte zu Serialisieren.
Delphi-Quellcode:
MyObject { Name = 'Mein Name', Age = 13, Address = 'Einbacherstrasse 17' }
Ist im Prinzip genau ein Objekt Namens MyObject, mit drei gesetzten Eigenschaften Name, Age und Address mit den jeweiligen Werten. Selber implementieren ist schwachfug, ich würde da auf existierende Bibliotheken setzen.

Webservices nutzen halt kein JSON sondern SOAP - also XML - in dem diese Daten stehen. Dazu kommen dann noch Informationen was der Server machen soll (Daten lesen und liefern, Daten schreiben ect.).

In jedem Fall bedingt dies, das irgendeine Anwendung auf dem Server läuft und Anfragen annimmt und diese beantwortet. Am einfachsten (IMHO) geht das mit ASP.NET Webservices (.asmx). Du schreibst also im Prinzip Funktionen, die Du als Webservice markierst. ASP.NET sorgt dann automatisch dafür, dass diese Funtionen über einen Webservice aufgerufen werden können. Dabei kommt dann eine .wsdl-Datei (Web service description language) raus, die Du z.B. in eine Delphi-Anwendung importieren kannst. Dort rufst Du dann die aus der WSDL generierten Funktionen einfach nur auf. Das ganze Kommunikationsgeraffel und das SOAP siehst Du gar nicht.

Willst Du das ganze etwas flexibler und mehr RAD-like (und vielleicht sogar 100% Delphi) haben, dann kannst Du auch mal einen Blick auf http://www.dataabstract.com werfen.

DelphiManiac 7. Apr 2010 16:43

Re: DB-Zugriff über Internet kapseln (JSON oder Webservice)
 
Hallo Phoenix,

danke für deine Antwort,

wi würde das denn in meinem konkreten Beispiel aussehen mit JSON?
Ich habe einen Terminplaner der für jeden Eintrag ein Start und Enddatum hat und einen Text.
Das Objekt ist ja hier schnell definiert:

Buchung { Start = '01.01.2010 13:00:00', End = '01.01.2010 14:00:00', Address = 'Irgendein langer Text.....' }

D.h. jetzt könnte ich dieses Objekt über das Netz verschicken und würde dann in meiner Server Anwendung (Webservice oder ähnliches)
darauf reagieren und einen DB-Zugriff basteln, oder wie?

Client: sendet Buchung { Start = '01.01.2010 13:00:00', End = '01.01.2010 14:00:00', Address = 'Irgendein langer Text.....' }
WebServer: empfängt Buchung { Start = '01.01.2010 13:00:00', End = '01.01.2010 14:00:00', Address = 'Irgendein langer Text.....' }
Webservice verarbeitet und macht evtl DB-Zugriffe?!

Ist das so richtig?!
Danke

Phoenix 7. Apr 2010 16:55

Re: DB-Zugriff über Internet kapseln (JSON oder Webservice)
 
Eigentlich nein.
Webservices können nur SOAP. Wenn Du JSON benutzen willst, dann müsste Dein Server ein REST-Interface zur Verfügung stellen.

Ganz ehrlich: Such Dir eine Technologie aus, die das ganze Übertragungsgeraffel und die Protokolle für Dich handeln. Du willst kein JSON bauen. Du willst sowas hier machen:
Delphi-Quellcode:
myObject := ServerConnector.LoadDataById(irgendeineId);
myObject.Value := 10;
ServerConnector.StoreData(myObject);
Indem Du auf dem Server folgendes zur verfügung stellst:
Delphi-Quellcode:
function LoadDataById(id: integer): IrgendEinTyp;
procedure StoreData(obj: IrgendEinTyp);
Der ganze Rest soll automatisch passieren. Wenn Du das selber baust, dann handelst Du Dir mindestens ein paar MannMonate an Arbeit ein, und hast noch nichtmal eine einzige Methode implementiert.

mschaefer 7. Apr 2010 18:07

Re: DB-Zugriff über Internet kapseln (JSON oder Webservice)
 
Moin, moin,

bei SOAP habe ich mich bei unseren Freunden von IBM orientiert, die ein Beispiel auf Ihren Webseiten für Delphi anbieten SOAPund DB2.

Grüße in die Runde // Martin

Bernhard Geyer 7. Apr 2010 21:08

Re: DB-Zugriff über Internet kapseln (JSON oder Webservice)
 
Nimm JSON/REST. WS/SOAP hat einige Nachteile die auch dafür gesorgt haben das auch die Großen wie Google/Amazon/... diverse schon als WS/SOAP bereitgestellten Schnittstellen wieder eingestampft haben.

rwachtel 7. Apr 2010 22:28

Re: DB-Zugriff über Internet kapseln (JSON oder Webservice)
 
Zitat:

Zitat von Bernhard Geyer
Nimm JSON/REST. WS/SOAP hat einige Nachteile die auch dafür gesorgt haben das auch die Großen wie Google/Amazon/... diverse schon als WS/SOAP bereitgestellten Schnittstellen wieder eingestampft haben.

Dennoch kann ich mich bei so einer Aussage nur wieder selbst zitieren:

Zitat:

Zitat von rwachtel
REST ist in sicherheitsrelevanten Enterprise-Umgebungen auf Grund der fehlenden Unterstützung von Sicherheitsaspekten oder nichtfunktionaler Attribute und damit einhergehend der halbgaren Lösungen für Orchestrierung nun wahrlich nicht das erste Mittel der Wahl.

REST wird ob seines Hypes häufig sehr überbewertet und man verliert dadurch auch schon mal den Blick für die Probleme, die man sich damit ins Haus holt.


mjustin 8. Apr 2010 06:39

Re: DB-Zugriff über Internet kapseln (JSON oder Webservice)
 
Zitat:

Zitat von Bernhard Geyer
Nimm JSON/REST. WS/SOAP hat einige Nachteile die auch dafür gesorgt haben das auch die Großen wie Google/Amazon/... diverse schon als WS/SOAP bereitgestellten Schnittstellen wieder eingestampft haben.

Naja, es gibt auch ausreichend Beispiele in denen SOAP keinerlei Probleme macht und wegen der leichteren Integration und Handhabung Einsparungen ermöglicht - eine britische Bank (if.com) wurde IT-seitig komplett auf der Basis von SOAP aufgebaut. (Beschrieben in Krafzig/Banke/Slama "Enterprise SOA - Service Oriented Architecture Best Practices".

mschaefer 8. Apr 2010 07:28

Re: DB-Zugriff über Internet kapseln (JSON oder Webservice)
 
Liefere hier mal einige Links zu REST und SOAP, damit man das mal selbst testen kann:

Delphi - REST-Client Collection zeigt wie man fremde Rest-Services nutzt.
Video für die Entwicklung eines Delphi-REST-Servers von Embracadero.
SOAP, REST, and the KISS rule ein Vergleich von Marco Cantù.

Bin übrigens der Meinung, dass es eher eine Frage ist welche Infrastruktur bedient werden soll. SOA ist im Java-Umfeld doch sehr verbreitet und da bietet Delphi eine gute Anbindung. Rest ist sicherlich der modernere Weg, aber die Aufgabe war hier lediglich eine Datenbank über Internet anzubinden.

Grüße

hgourvest 28. Apr 2010 11:01

Re: DB-Zugriff über Internet kapseln (JSON oder Webservice)
 
Hi,

I also would like to suggest an opensource project for Delphi 2010:
"Delphi On Rails", it is a MVC/REST server that natively handle JSON.
It use the new RTTI from Delphi 2010 for data marshalling and method invocation.
It can be used as a web server and/or application server.
There is also
- a Firebird and SQLite JSON data connector,
- CAIRO, an open source vectorial library to produce SVG, PNG, PDF ...
- Lua scripting language

The google code repository:
http://www.delphionrails.com

Regards


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz