Разработка программного обеспечения:Приложение уровня 2 с набором клиентских данных и сокетами

StackOverflow https://stackoverflow.com/questions/1244465

  •  12-09-2019
  •  | 
  •  

Вопрос

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

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

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

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

Сервер: DB -> ADOQuery -> DataSetProvider -> ClientDataSet -> SaveToStream (поток памяти)

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

Я использую SendDataToSocket (Сокет:Ткустомвинсокет;Данные:Указатель;Размер данных:Целое число;Буфер:TMemoryStream):Целое число;

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

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

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top