Pregunta

Tengo la tarea de crear una aplicación de nivel 2 de la siguiente manera:

Base de datos MSSQL <-> Servidor <-> n-Client (n para muchos)

El cliente envía los datos al servidor. El servidor selecciona la materia a partir de la base de datos y luego lo envía de vuelta al cliente. Actualmente estoy haciendo eso con Registros y SendDataToSocket (url está por debajo).

.

Quiero usar TDBGrid en el cliente utilizando los datos recibidos a través de tomas desde el servidor En el momento en que es la siguiente:

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

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

Estoy utilizando SendDataToSocket (zócalo: TCustomWinSocket; datos: Pointer; DataSize: Integer; Buffer: TMemoryStream): Integer;

Lo que quiero hacer es enviar el flujo de ClientDataSet en el lado del servidor crea para el cliente que utiliza LoadFromStream para leer la corriente. Es la SendDataToSocket viable aquí?

espero que lo que quiero decir.

¿Fue útil?

Solución

Sí, siempre y cuando el cliente estaba listo para recibir los datos. Esto funcionaría bien, sin embargo, dependiendo de la cantidad y el tipo de datos que puede ser que desee comprimir la secuencia de memoria antes de enviarlo. He realizado un enfoque similar en proyectos anteriores, pero se utiliza sinapsis para la transferencia de datos ... pero el concepto básico era el mismo.

La unidad zlib (incluido por CodeGear) contiene un simple envoltorio alrededor de una corriente que proporciona la compresión y descompresión. Debido a que su control de ambos lados del alambre, la compresión muy probablemente aumentará el rendimiento al reducir el tiempo de alambre.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top