Pergunta

Eu tenho a tarefa de criar um aplicativo de camada 2 como segue:

MSSQL banco de dados <-> Servidor <-> n-Client (n para muitos)

O cliente envia dados para o servidor. Os seleciona servidores coisas a partir do banco de dados e, em seguida, envia-lo de volta para o cliente. Atualmente estou fazendo isso com Records e SendDataToSocket (url é abaixo).

Quero usar TDBGrid no cliente utilizando dados recebidos via soquetes do servidor No momento, é assim:.

Servidor: DB -> ADOQuery -> DataSetProvider -> ClientDataSet -> SaveToStream (MemoryStream)

Cliente: ClientDataSet -> LoadFromStream (MemoryStream) -> DataSource -> DBGrid

Eu estou usando SendDataToSocket (soquete: TCustomWinSocket; Dados: Pointer; DataSize: Integer; buffer: TMemoryStream): Integer;

Então, o que eu quero fazer é enviar o fluxo do ClientDataSet no lado do servidor cria para o cliente que usa LoadFromStream para ler o fluxo. o SendDataToSocket é viável aqui?

Eu espero que você consiga o que quero dizer.

Foi útil?

Solução

Sim, desde que o cliente estava pronto para receber os dados. Isso poderia funcionar bem, no entanto, dependendo da quantidade e do tipo de dados que você pode querer comprimir o fluxo de memória antes de enviar. Tenho realizado uma abordagem semelhante em projectos anteriores, mas eu usei sinapse para a transferência de dados ... mas o conceito básico era o mesmo.

A unidade zlib (incluído por CodeGear) contém um invólucro simples em torno de um fluxo que proporciona a compressão e a descompressão. Desde o seu controle ambos os lados do fio, a compressão vai aumentar o desempenho muito provavelmente, reduzindo o tempo de arame.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top