1

次のように、階層 2 アプリケーションを作成するタスクがあります。

MSSQL データベース <-> サーバー <-> n-クライアント (多数の場合は n)

クライアントはサーバーにデータを送信します。サーバーはデータベースからデータを選択し、それをクライアントに送り返します。現在、私は Records と SendDataToSocket (url は以下) でそれを行っています。

サーバーからソケット経由で受信したデータを使用して、クライアントで TDBGrid を使用したいと考えています。現時点では、次のようになります。

サーバー: DB -> ADOQuery -> DataSetProvider -> ClientDataSet -> SaveToStream(MemoryStream)

クライアント: ClientDataSet -> LoadFromStream(MemoryStream) -> DataSource -> DBGrid

SendDataToSocket (Socket: TCustomWinSocket; Data: Pointer; DataSize: Integer; Buffer: TMemoryStream): Integer;を使用しています。

だから私がしたいのは、サーバー側のclientdatasetが作成したストリームを、loadfromstreamを使用してストリームを読み取るクライアントに送信することです。SendDataToSocket はここで実行可能ですか?

私が言いたいことを理解していただければ幸いです。

4

1 に答える 1

1

はい、クライアントがデータを受信する準備ができている限り。これはうまく機能しますが、データの量とタイプによっては、送信前にメモリ ストリームを圧縮する必要があります。以前のプロジェクトでも同様のアプローチを実行しましたが、データ転送にシナプスを使用しました...基本的なコンセプトは同じでした。

zlib ユニット (CodeGear に含まれる) には、圧縮と圧縮解除を提供するストリームの周りの単純なラッパーが含まれています。ワイヤーの両側を制御するため、圧縮によりワイヤー時間が短縮され、パフォーマンスが向上する可能性が高くなります。

于 2009-08-07T16:02:44.510 に答える