Разработка программного обеспечения:Приложение уровня 2 с набором клиентских данных и сокетами
Вопрос
У меня есть задача создать приложение уровня 2 следующим образом:
База данных MSSQL <-> Сервер <-> n-Клиент (n для многих)
Клиент отправляет данные на сервер.Сервер выбирает данные из базы данных, а затем отправляет их обратно клиенту.В настоящее время я делаю это с Records и SendDataToSocket (URL приведен ниже).
Я хочу использовать TDBGrid на клиенте, используя данные, полученные через сокеты с сервера. На данный момент это выглядит следующим образом:
Сервер: DB -> ADOQuery -> DataSetProvider -> ClientDataSet -> SaveToStream (поток памяти)
Клиент: ClientDataSet -> LoadFromStream (поток памяти) -> Источник данных -> DBGrid
Итак, что я хочу сделать, это отправить поток, созданный clientdataset на стороне сервера, клиенту, который использует loadfromstream для чтения потока.Является ли SendDataToSocket жизнеспособным здесь?
Я надеюсь, вы понимаете, что я имею в виду.
Решение
Да, до тех пор, пока клиент был готов получить данные.Это будет работать хорошо, однако в зависимости от объема и типа данных вы можете захотеть сжать поток памяти перед отправкой.Я применял аналогичный подход в предыдущих проектах, но я использовал синапс для передачи данных...но основная концепция была той же.
Модуль zlib (входит в комплект CodeGear) содержит простую оболочку вокруг потока, которая обеспечивает сжатие и распаковку.Поскольку вы контролируете обе стороны провода, сжатие, скорее всего, повысит производительность за счет сокращения времени подключения.