Разработка программного обеспечения: приложение уровня 2 с ClientDataSet и сокетами - PullRequest
1 голос
/ 07 августа 2009

У меня есть задача создать приложение уровня 2 следующим образом:

База данных MSSQL <-> Сервер <-> n-Client (n для многих)

Клиент отправляет данные на сервер. Сервер выбирает материал из базы данных и затем отправляет его обратно клиенту. В настоящее время я делаю это с помощью Records и SendDataToSocket (url ниже).

Я хочу использовать TDBGrid на клиенте, используя данные, полученные через сокеты с сервера. На данный момент все выглядит так:

Сервер: БД -> ADOQuery -> DataSetProvider -> ClientDataSet -> SaveToStream (MemoryStream)

Клиент: ClientDataSet -> LoadFromStream (MemoryStream) -> Источник данных -> DBGrid

Я использую SendDataToSocket (Socket: TCustomWinSocket; Data: Pointer; DataSize: Integer; Буфер: TMemoryStream): Integer;

Итак, я хочу отправить поток, который клиентский набор данных на стороне сервера создает клиенту, который использует loadfromstream для чтения потока. Действительно ли SendDataToSocket здесь?

Надеюсь, вы понимаете, о чем я.

1 Ответ

1 голос
/ 07 августа 2009

Да, если клиент был готов к получению данных. Это будет хорошо работать, однако, в зависимости от объема и типа данных, которые вы можете сжать поток памяти перед отправкой. Я выполнял аналогичный подход в предыдущих проектах, но я использовал синапс для передачи данных ... но основная концепция была такой же.

Модуль zlib (включенный в CodeGear) содержит простую обертку вокруг потока, которая обеспечивает сжатие и распаковку. Поскольку вы контролируете обе стороны провода, сжатие, скорее всего, повысит производительность за счет сокращения времени провода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...