RPC Dateien (Schnittstellenbeschreibung)

  • Hallo,


    einen offiziellen Download für die RPC-Dateien haben wir derzeit nicht, ich füge die Dateien daher hier im Thread als Download bei: rpc_4.1.20_build1524.zip.


    Ab der aktuellen Version 4.1.20 (Build 1524) wird mit dem GREYHOUND Server auch unsere offizielle PHP API mit ausgeliefert. Diese ist nach der Installation bzw. nach dem Update im Ordner GREYHOUND/Libraries/php zu finden. Ich füge die PHP API der Einfachheit halber hier auch als Download bei, da z.B. Kunden im Hosting ja nicht auf den Ordner auf dem Server zugreifen können: php_api_4.1.20_build1524.zip.


    Die PHP API beinhaltet unter anderem auch PHP Klassen und Methoden, um auf die RPC-Schnittstelle des Servers zuzugreifen. Näheres dazu bietet die Online-Dokumentation: GREYHOUND PHP API.


    Beste Grüße,
    Robert

  • Vielen Dank!


    Mir ist bei den datatype Deklarationen aufgefallen, dass es drei verschiedene Typen für Datum gibt: dateTime.iso8601, Datetime und TDateTime. Und umgekehrt gibt es für string und base64 nur eine gemeinsame datatype Deklaration, nämlich string. Welchen Hintergrund hat das? Gerade bei string und base64 wäre es schön, wenn es in den RPC-Dateien hinterlegt wäre.


    Viele Grüße, Andreas

  • Hallo,


    den base64 Datentyp habe ich in der aktuellen RPC-Beschreibung gar nicht gefunden. Ab der Version 4.1.20 (build 1524) werden über die XML-RPC und JSON-RPC Schnittstelle alle Binärdaten Base64-codiert übertragen. Binärdaten sind dabei beispielsweise Bilder und Bild-Signaturen, aber auch HTML-/Text-Inhalte von Elementen oder Textbausteinen.


    Das Datumsformat hängt von der Schnittstelle ab, bei XML-RPC werden Datumsangaben beispielsweise immer als dateTime.iso8601 übermittelt.


    Die GREYHOUND PHP API behandelt diese Typen transparent, so dass Datumsangaben PHP-seitig als GhRpcDateTime Objekt dargestellt werden, und String- sowie Binärdaten als Strings. Die Base64-codierung für Binärdaten übernimmt dabei die GREYHOUND PHP API.


    Ich hoffe, ich habe die Frage richtig verstanden, mir war z.B. nicht ganz klar wo die unterschiedlichen Typen auftauchen ;)

  • Hallo,


    die beiden Orte, die ich meinte, sind die Dokumentation hier auf der Webseite und die RPC Dateien. Es gibt drei verschiedene Typen für Datum (Datetime in filter.rpc, TDateTime in schemas.rpc und dateTime.iso8601). Ich kenne da die Unterschiede nicht, aber wenn es sich dabei tatsächlich um drei verschiedene Typen handelt, dann ist es ja ok.


    Viel wichtiger war mir die fehlende binary/base64 Deklaration in den RPC Dateien (sorry, ich meinte "binary", nicht "base64"). Ich sollte vielleicht erwähnen, dass ich die RPC Dateien für eine Java Code Generierung verwendet habe. Zum Beispiel: In der Doku lautet der Typ von ViewData in RpcContactProperties (http://greyhound-software.com/…pc/classes/classes_id=287) "rpc_itemslib.binary" und der Typ von "Company" lautet "string". In items.rpc ist für beide Felder jedoch lediglich ein "string" deklariert. Für einen Code Generator ist es daher aus den RPC Dateien allein nicht ersichtlich, ob ein Feld base64 encoded bzw. decoded werden muss oder nicht (was nur für binary der Fall ist). Der Anwender selbst muss sich also darum kümmern, und er muss es v. a. auch wissen. Oder übersehe ich was?


    Viele Grüße, Andreas

  • Hallo,


    das mit den Strings in der .rpc Datei ist natürlich ein berechtigter Einwand. Ich fürchte da habe ich die falsche Version der Dateien aus unserem Repository geholt! Ich habe gerade noch einmal die korrekte Version extrahiert und als Anhang angefügt: rpc_4.1.20_build1524.zip.


    Dort sind dann auch die Typen korrekt als "binary" deklariert.


    Sorry für die irreführende falsche Version!

  • Hallo Martin,


    ich habe es ganz low level gemacht: .rpc Dateien mit javax.xml geparst, daraus für jeden Typ, Enum, Service, Methode usw. einen StringBuffer gefüllt und als java File auf die Festplatte geschrieben. Für das Protokoll verwende ich Apache XML-RPC (http://ws.apache.org/xmlrpc/index.html). Wenn man es etwas sauberer machen möchte, kann ich das noch empfehlen: http://freemarker.sourceforge.net/


    Viele Grüße,
    Andreas