Frage

Ich habe die Aufgabe, ein Tier-2-Anwendung zu erstellen, wie folgt:

MSSQL-Datenbank <-> Server <-> n-Client (n für viele)

Der Client sendet Daten an den Server. Der Server wählt Sachen aus der Datenbank und sendet sie dann an den Client zurück. Zur Zeit mache ich das mit Aufzeichnungen und SendDataToSocket (url ist unten).

.

Ich möchte TDBGrid auf dem Client verwenden, um Daten empfangen über Sockets vom Server mit Im Moment geht es wie folgt aus:

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

Auftraggeber: ClientDataSet -> Loadfromstream (Memorystream) -> Datasource -> DBGrid

Ich bin mit SendDataToSocket (Sockel: TCustomWinSocket; Daten: Pointer; Datasize: Integer; Puffer: TMemoryStream): Integer;

Also, was ich tun möchte, ist der Strom in den ClientDataSet auf der Serverseite des Kunden, der den Stream Loadfromstream lesen verwendet erstellt senden. Ist die SendDataToSocket tragfähige hier?

Ich hoffe, Sie bekommen, was ich meine.

War es hilfreich?

Lösung

Ja, solange der Kunde war bereit, die Daten zu empfangen. Dies würde gut funktionieren, jedoch abhängig von der Menge und Art der Daten, die Sie wünschen können den Speicherstrom vor dem Senden zu komprimieren. Ich habe einen ähnlichen Ansatz in früheren Projekten durchgeführt, aber ich verwenden Synapse für die Datenübertragung ... aber das Grundkonzept war das gleiche.

Die zlib Einheit (eingeschlossen durch CodeGear) enthält eine einfache Hülle um einen Strom, der Kompression und Dekompression liefert. Da Ihre beiden Seiten des Drahtes zu steuern, Kompression wird höchstwahrscheinlich erhöht die Leistung durch Drahtzeit reduziert wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top