2009-07-09 7 views
1

Einfach. Ich habe ein LINQ-TO-SQL-Entity-Modell erstellt, eine Website erstellt, einen Data Service (* .svc) zu dieser Site hinzugefügt und sichergestellt, dass dies funktioniert, indem eine einfache .NET-Konsolenanwendung geschrieben wird. Der Service funktioniert einwandfrei und kann nicht geändert werden.Einen ADO.NET-Datenservice von einer WIN32 Delphi-Anwendung konsumieren. Wie?

Jetzt werde ich eine Delphi-Anwendung (2007) für WIN32 schreiben, die diesen Datendienst aufrufen muss. Und während Delphi keine größeren Probleme beim Importieren eines SOAP-Dienstes hat, kann es diesen Dienst nicht importieren, da es keine WSDL bereitstellt.

Also, zwei Optionen. Ich könnte herausfinden, wie man eine WSDL basierend auf diesem Datendienst generiert oder ich muss eine andere Möglichkeit finden, diesen Dienst zu nutzen. (Oder gib einfach auf, aber ich hasse es, diese Herausforderung zu beenden.) Also, irgendwelche Ratschläge?

Antwort

1

ADO.NET Data Services sind REST Dienstleistungen. Sie sind keine SOAP WebServices und ich glaube nicht, dass REST WSDL verwendet. Sie können REST-Services von Delphi aus mit HTTP GET/PUT/POST/DELETE aufrufen. Sie könnten Indys TIdHTTPClient verwenden. Beispiele für URLs finden Sie unter http://msdn.microsoft.com/en-us/library/cc668786.aspx. Die Ergebnisse sind im Format Atom, das ein XML-Format ist. Sie könnten es mit TXMLDocument analysieren. Sie können auch JSON zurückgeben.

+0

Ja, das wäre der "andere Weg", den ich befürchtet habe. –

1

Vielleicht können Sie die Projekt Jedi "Url Grabber" -Komponenten verwenden, um den Dienst zu konsumieren. Ich habe es geschafft, in der Vergangenheit Live-Share-Daten zu erhalten. Ich weiß nicht genau, wie Ihr Setup funktioniert, aber vielleicht können diese hilfreich sein.

http://www.delphi-jedi.org/

+0

Nun, ich bevorzuge es, nur die "winhttp.dll" -Typ-Bibliothek zu importieren, um Seiten aus dem Web zu greifen. Dies ermöglicht auch Dinge wie GET, POST, PUT, etc. Ein weiterer Vorteil ist, dass dies die Standard-IE-Einstellungen verwendet, um auf das Internet zuzugreifen, also keine großen Sorgen über Proxies und andere Sachen. Ich habe in der Vergangenheit Jedi benutzt, aber für einige Anwendungen, denke ich, fügt es einfach zu viel Overhead hinzu. Trotzdem, gute Antwort. –

0

Sie sollten sich auch synapse ansehen, eine kleine, einfach zu bedienende Bibliothek, die gut mit REST funktioniert. Die neueste Version, die über SVN heruntergeladen werden kann, funktioniert gut in Delphi 2009.