Domanda

Ho il compito di creare un'applicazione di livello 2 come segue:

MSSQL <-> Server <-> n-client (n per molti)

Il client invia i dati al server. Il server seleziona roba dal database e poi lo invia al client. Attualmente sto facendo che con Records e SendDataToSocket (url è al di sotto).

.

Voglio usare TDBGrid sul client utilizzando i dati ricevuti tramite prese dal server Al momento si va in questo modo:

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

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

SendDataToSocket (Socket: TCustomWinSocket; dati: Pointer; DataSize: Integer; tampone: TMemoryStream): Integer;

Quindi quello che voglio fare è inviare il flusso del ClientDataSet sul lato server crea al cliente che utilizza loadfromstream per leggere il flusso. È il SendDataToSocket praticabile qui?

Mi auguro che si ottiene quello che voglio dire.

È stato utile?

Soluzione

Sì, a patto che il cliente era pronto a ricevere i dati. Questo dovrebbe funzionare bene, tuttavia a seconda della quantità e del tipo di dati che si potrebbe desiderare di comprimere il flusso di memoria prima dell'invio. Ho effettuato un approccio simile in progetti precedenti, ma ho usato sinapsi per il trasferimento dei dati ... ma il concetto di base è stato lo stesso.

L'unità zlib (incluso da CodeGear) contiene un semplice involucro attorno a un ruscello che fornisce la compressione e decompressione. Dal momento che il controllo di entrambi i lati del filo, di compressione molto probabilmente aumentare le prestazioni riducendo il tempo di filo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top