Consumindo o serviço C # WCF do cliente Delphi 2010: Databinding e Entity Framework
Eu estou migrando um aplicativo win32 Delphi VCL escrito em Delphi 2010 para uma arquitetura multi-camadas.
O aplicativo faz uso extensivo de ExpressGrids (TcxGrid) pelo devexpress para ligação de dados.
Tudo isso funcionando bem, o cliente Delphi se comunica com o serviço WCF para trocar objetos de transferência de dados.
O problema é,Como faço para manter a funcionalidade de vinculação de dados? Eu estou inclinado a escrever um método de serviço que retorna uma tabela de dados genérica ou um conjunto de dados. Posso converter os resultados da instrução linq em conjuntos de dados, tabelas ou visualizações? Não tenho certeza se posso vincular o Expressgrids a matrizes de objetos (o WCF retorna coleções de entidades, mas o Delphi vê matrizes). Alguém já teve experiência com este tipo de interoperabilidade?
EDITAR
Eu tenho o serviço de dados retornando DataSets, mas adivinhem? O conjunto de dados xml do .net não é compatível com o Delphi (pelo menos 2010). Eu consegui fazer isso funcionar usando oExemplo de Gekko (modificado) , mas não vai ser prático devido à complexidade das consultas que precisamos para executar a partir do cliente. Nossas opções agora são deixar as Grids como estão até que a BLL esteja completa e iniciar um novo projeto para reescrever o cliente em C # (como uma aplicação web ou windows) ou, escrever um plugin Grid genérico usando RemObjects Hydra, para incorporar em formas com grades, tentando descobrir isso agora.
Atualizar Eu deixei cair a implementação Gekko DataSet em favor de escrever o meu próprio, estudando o formato xml exigido pelo TClientDataSet no Delphi. No lado do servidor, implementei um serviço que retorna xml compatível com TClientDataSet na forma de uma matriz de bytes. No cliente, eu carrego isso em um TStringStream e, em seguida, carrego o fluxo no componente TclientDataSet. Eu uso isso para pequenas coleções para fornecer pesquisas e vinculação de dados enquanto lançamos a solução Hydra.
O xml segue aproximadamente este formato:
<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>
este é uma das poucas fontes de informação no formato xml.
Eu sei que a pergunta é antiga, mas gostaria de receber informações sobre interoperabilidade e migração de código legado.
obrigado