C # -WCF-Dienst vom Delphi 2010-Client konsumieren: Datenbindung und Entity Framework

Ich migriere eine in Delphi 2010 geschriebene Win32-Delphi-VCL-Anwendung auf eine mehrschichtige Architektur.
Die Anwendung nutzt ExpressGrids (TcxGrid) von devexpress in großem Umfang für die Datenbindung.

Ich habe die Datenschicht basierend auf dem Entity-Framework unter Verwendung von dbContext- und Datenübertragungsobjekten entworfen.Ich habe die CRUD-Operationen über WCF unter Verwendung von T4-Vorlagen basierend auf dem Entitätsdatenmodell verfügbar gemacht.

Alles funktioniert einwandfrei. Der Delphi-Client kommuniziert erfolgreich mit dem WCF-Dienst, um Datenübertragungsobjekte auszutauschen.

Das Problem ist,Wie pflege ich die Datenbindungsfunktionalität?? Ich neige dazu, eine Dienstmethode zu schreiben, die eine generische Datentabelle oder ein Dataset zurückgibt. Kann ich linq-Anweisungsergebnisse in Datensätze, Tabellen oder Ansichten konvertieren? Ich bin nicht sicher, ob ich Expressgrids an Arrays von Objekten binden kann (WCF gibt Entitätssammlungen zurück, Delphi erkennt jedoch Arrays). Hat jemand Erfahrung mit dieser Art von Interoperabilität?

BEARBEITEN

Ich habe den Datendienst, der DataSets zurückgibt, aber raten Sie mal, was? Das XML-Dataset von .net ist nicht mit Delphi (mindestens 2010) kompatibel. Ich habe es geschafft, dass das funktioniert mit demGekko-Beispiel (modifiziert) Aufgrund der Komplexität der Abfragen, die wir vom Client ausführen müssten, wird dies jedoch nicht praktikabel sein. Wir können jetzt die Grids so lassen, wie sie sind, bis die BLL abgeschlossen ist, und ein neues Projekt starten, um den Client in C # (als Web- oder Windows-Anwendung) neu zu schreiben, oder ein generisches Grid-Plugin mit RemObjects Hydra schreiben, um In Formulare mit Gittern einbetten - versuchen Sie das jetzt herauszufinden.

Aktualisieren Ich habe die Gekko DataSet-Implementierung zugunsten des eigenen Schreibens fallen gelassen, indem ich das für TClientDataSet in Delphi erforderliche XML-Format studiert habe. Auf der Serverseite habe ich einen Dienst implementiert, der TClientDataSet-kompatibles XML in Form eines Byte-Arrays zurückgibt. Auf dem Client lade ich dies in einen TStringStream und lade dann den Stream in die TclientDataSet-Komponente. Ich verwende dies für kleine Sammlungen, um Nachschlagen und Datenbindung zu ermöglichen, während wir die Hydra-Lösung einführen.

Die XML folgt ungefähr diesem Format:

<code>"2.0">
  <METADATA>
    <FIELDS>
      <FIELD attrname="ID" fieldtype="i4"/>
      <FIELD attrname="Status" fieldtype="string" WIDTH="10"/>
      <FIELD attrname="Created" fieldtype="date"/>


<ROWDATA>
    <ROW RowState="4" ID="1" Status="Code1" Created="20130707" Made="20130707T21:37:55341" Stopped="00:00:00000" Volume="1174" IsReady="TRUE"/>
    <ROW RowState="4" ID="2" Status="Code2" Created="20130707" Made="20130707T21:37:55341" Stopped="00:00:00000" Volume="2149" IsReady="FALSE"/>
</code>

Diese ist eine der wenigen Informationsquellen zum XML-Format.

Ich weiß, dass die Frage alt ist, aber ich würde mich über Erkenntnisse zur Interoperabilität und zur Migration von Legacy-Code freuen.

Vielen Dank

Antworten auf die Frage(0)

Ihre Antwort auf die Frage