Question

J'ai la tâche de créer une application de niveau 2 comme suit:

Base de données MSSQL <-> Serveur <-> n-client (n pour beaucoup)

Le client envoie des données au serveur. Le serveur sélectionne des choses à partir de la base de données et l'envoie ensuite au client. Actuellement, je fais cela avec des documents et SendDataToSocket (url est ci-dessous).

.

Je veux utiliser TDBGrid sur le client à l'aide des données reçues via les sockets du serveur À l'heure actuelle, il va comme ceci:

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

Client: ClientDataSet -> LoadFromStream (MemoryStream) -> source de données -> DBGrid

J'utilise SendDataToSocket (Socket: TCustomWinSocket; données: Pointer; DataSize: Integer; tampon: TMemoryStream): Integer;

Alors ce que je veux faire est d'envoyer le flux ClientDataSet du côté du serveur crée au client qui utilise LoadFromStream pour lire le flux. le SendDataToSocket est viable ici?

J'espère que vous obtenez ce que je veux dire.

Était-ce utile?

La solution

Oui, tant que le client était prêt à recevoir les données. Cela fonctionnerait bien, mais en fonction de la quantité et le type de données que vous pouvez compresser le flux de mémoire avant l'envoi. J'ai effectué une approche similaire dans les projets précédents, mais j'utilisé synaptique pour le transfert de données ... mais le concept de base était le même.

L'unité de zlib (compris par CodeGear) contient une simple enveloppe autour d'un courant qui fournit une compression et une décompression. Étant donné que votre contrôle des deux côtés du fil, la compression augmentent la performance la plus probable en réduisant le temps de fil.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top