Клиент-серверное приложение

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Клиент-серверное приложение

Сообщение san7667 » 13.08.2023 09:24:22

Добрый день, захотелось попробовать слепить небольшую информационную систему по типу клиент-сервер.
Установил indy 10 для написания клиента и сервера, дальше с моим скудным знанием сетевых архитектур, я не знаю куда двигаться дальше..
Подскажите, как организовать соединение между клиентом и сервером?
Я так понимаю на сервере должны лежать: подключение к БД и различные query компоненты, а с клиента это все дело вызывается и передается в датасеты?
san7667
новенький
 
Сообщения: 42
Зарегистрирован: 18.06.2023 17:57:37

Re: Клиент-серверное приложение

Сообщение WAYFARER » 13.08.2023 10:05:01

Вы описываете трехуровневую архитектуру, здесь надо хорошо подумать, надо ли это для небольшой ИС. Может быть будет достаточно двухуровневой(Клиент-Сервер БД)?
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 520
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Клиент-серверное приложение

Сообщение san7667 » 13.08.2023 10:13:16

WAYFARER писал(а):Вы описываете трехуровневую архитектуру, здесь надо хорошо подумать, надо ли это для небольшой ИС. Может быть будет достаточно двухуровневой(Клиент-Сервер БД)?


У меня сейчас так построено, с одного экзешника подключаются с клиента (БД на сервер БД)
Хотелось бы трехзвонку попробовать...
san7667
новенький
 
Сообщения: 42
Зарегистрирован: 18.06.2023 17:57:37

Re: Клиент-серверное приложение

Сообщение Alex2013 » 13.08.2023 12:09:55

san7667 писал(а):Добрый день, захотелось попробовать слепить небольшую информационную систему по типу клиент-сервер.
Установил indy 10 для написания клиента и сервера, дальше с моим скудным знанием сетевых архитектур, я не знаю куда двигаться дальше..
Подскажите, как организовать соединение между клиентом и сервером?
Я так понимаю на сервере должны лежать: подключение к БД и различные query компоненты, а с клиента это все дело вызывается и передается в датасеты?

При всем моем разочарование в идеях " тотального внедрения Веб- интерфейсов " для частичной замены старой "Клиент-серверной архитектуры" эта технология подходит как нельзя лучше.
Пишем простой веб-сервер с применением того-же indy 10, а в клиент засовываем банальный html-вьювер ( можно даже без браузерного движка ) и все ! Никаких "танцев с бубном" вокруг сокетов сетевых протоколов и прочего "лоу-тека 20-го века". Прелесть веб-технологии в том что это практически "терминальный доступ" к серверу, а это значит что все вероятные коллизии и блокировки обрабатываются только одной программой а доступ к БД надежно "инкапсулирован" и отделен от любого "клиентского-произвола" .

Зы
Почему я пишу о "частичной замене" ? Потому что "клиентский код" писать все-же придется но на "темной стороне сервера". То есть после авторизации сервер по сути запускает "виртуальный клиент" с которым и будет работать "удаленный пользователь" (в прочем как и условно "локальный ") с помощью "псевдо терминала " с веб-интерфейсом.
Зы Зы
А если интересны причины моего "разочарования" то она очень проста, дело в том что современные Веб- интерфейсы просто чудовищно громоздки и часто фактически запуская "полноценный-целевой-софт-на-JS" по сути губят саму суть идей лёгкости и прозрачности "Веб-пространства" .(ничего не имею против умеренного использования скриптов но это ИМХО должно быть просто вспомогательной функцией типа "часиков" или легкой анимации на веб странице )
Последний раз редактировалось Alex2013 21.08.2023 13:16:32, всего редактировалось 1 раз.
Alex2013
долгожитель
 
Сообщения: 2957
Зарегистрирован: 03.04.2013 11:59:44

Re: Клиент-серверное приложение

Сообщение delphius » 13.08.2023 16:47:31

san7667 писал(а):Добрый день, захотелось попробовать слепить небольшую информационную систему по типу клиент-сервер.
Установил indy 10 для написания клиента и сервера, дальше с моим скудным знанием сетевых архитектур, я не знаю куда двигаться дальше..
Подскажите, как организовать соединение между клиентом и сервером?

Проект будет закрытый или открытый?
Если закрытый, то приведите аналогичный пример существующей рабочей системы, которая может выступить в качестве прототипа для вашей, чтобы понимать не обобщенно, а конкретное ТЗ на систему.
Если открытый, то максимально подробно опишите, что и как будет с пользовательской точки зрения, хорошо бы завести себе github, хотяб для элементов системы чтобы можно было понимать ход движения и давать конкретные советы и направления.
Сейчас все очень расплывчато, а отправлять просто читать литературу тоже не хочется...

Но библию все же надо посоветовать. Разработка Web-служб средствами Delphi
magnet:?xt=urn:btih:121FDF7B85C5A6772F2E16492DF502731AC5C480&tr=http%3A%2F%2Fbt3.t-ru.org%2Fann%3Fmagnet&dn=Мастер%20программ%20-%20Дарахвелидзе%20П.%20Г.%2C%20Марков%20Е.%20П.%20-%20Разработка%20Web-служб%20средствами%20Delphi%20%5B2003%2C%20PDF%2C%20RUS%5D


Вот тут очень хорошо в главе 2 про сокеты:
magnet:?xt=urn:btih:6C65BBDC8FFC582C98D5E0B156F83CA5360CB35B&tr=http%3A%2F%2Fbt4.t-ru.org%2Fann%3Fmagnet&dn=Григорьев%20А.Б.%20-%20О%20чём%20не%20пишут%20в%20книгах%20по%20Delphi%20%5B2008%2C%20PDF%2C%20RUS%5D


Добавлено спустя 12 минут 58 секунд:
Alex2013 писал(а): Прелесть веб-технологии в том что это практически "терминальный доступ" к серверу, а это значит что все вероятные коллизии и блокировки обрабатываются только одной программой а доступ к БД надежно "инкапсулирован" и отделен от любого "клиентского-произвола" .

Про архитектуры и миграцию БЛ мне понравилось у автора Indy, вот статья в переводе Где наша бизнес-логика, сынок?
delphius
постоялец
 
Сообщения: 122
Зарегистрирован: 18.03.2020 13:40:11

Re: Клиент-серверное приложение

Сообщение Sharfik » 15.08.2023 01:42:44

delphius, спасибо за книжки. Мне не лишние :)
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 766
Зарегистрирован: 20.07.2013 01:04:30

Re: Клиент-серверное приложение

Сообщение delphius » 15.08.2023 01:50:10

Sharfik писал(а):спасибо за книжки. Мне не лишние

Всегда пожалуйста :D
Тогда, чтобы добить, максимально подробно про winsock тут, правда примеры на с
Талмуд еще тот, но раньше умели хорошо писать... :mrgreen:
magnet:?xt=urn:btih:6BA396BFDDBCF20FF14A8A9ED13512E0AA2E3F63&tr=http%3A%2F%2Fbt4.t-ru.org%2Fann%3Fmagnet&dn=Мастер-класс%20-%20Джонс%20Э.%2C%20Оланд%20Д.%20-%20Программирование%20в%20сетях%20Microsoft%20Windows%20%5B2002%2C%20PDF%2C%20RUS%5D


Я в эти дебри полез, когда с smtp разбирался с нативными сокетами...что-то глубоко полез :twisted:
delphius
постоялец
 
Сообщения: 122
Зарегистрирован: 18.03.2020 13:40:11

Re: Клиент-серверное приложение

Сообщение Alex2013 » 15.08.2023 10:37:04

От меня тоже спасибо ! ( Хотя по моему многое описанное в книгах и особенно в статье избыточно по отношению к проектам на Лазарусе ( обычно это малые (до сотни пользователей и БД максимум до 1-4-х гигов (чисто "конторский софт")) или средние (несколько сотен пользователей (небольшая торговая площадка ) и БД примерно до 10 гигов) проекты ) ) Решать такие задачи с помощью многозвеньевой архитектуры и отдельного сервера БД ИМХО явно избыточный "оверкилл").
Alex2013
долгожитель
 
Сообщения: 2957
Зарегистрирован: 03.04.2013 11:59:44

Re: Клиент-серверное приложение

Сообщение delphius » 15.08.2023 10:45:34

Alex2013 писал(а):Решать такие задачи с помощью многозвеньевой архитектуры и отдельного сервера БД ИМХО явно избыточный "оверкилл"

У ТСа в первом сообщении ключевое слово "попробовать", при уже существующей рабочей клиент серверной схеме, так что я думаю, что в учебных целях все будет оправдано.
Но послушаем, что он сам скажет :roll:

Там же тоже много всякого интересного есть, например connection pooling :idea:
delphius
постоялец
 
Сообщения: 122
Зарегистрирован: 18.03.2020 13:40:11

Re: Клиент-серверное приложение

Сообщение Sharfik » 15.08.2023 14:14:40

Alex2013 писал(а):От меня тоже спасибо ! ( Хотя по моему многое описанное в книгах и особенно в статье избыточно по отношению к проектам на Лазарусе ( обычно это малые (до сотни пользователей и БД максимум до 1-4-х гигов (чисто "конторский софт")) или средние (несколько сотен пользователей (небольшая торговая площадка ) и БД примерно до 10 гигов) проекты ) ) Решать такие задачи с помощью многозвеньевой архитектуры и отдельного сервера БД ИМХО явно избыточный "оверкилл").

Вот я и решил подойти со стороны готового решения, и взял с англоязычного форума пример приложения клиент-сервер. Уже несколько месяцев вместо того чтобы спать разгребаю почему не работает то одно, то другое. Единственный плюс - за меня выстроенная архитектура деления на потоки. В остальном автор накосячил, у него все работало потому что тайминги были большие. И сообщение коротки были. А как попробовал сделать серию команд для работы с БД, все стало грустно. Вспоминаю что когда то читал про сокеты.. но вот вопрос заполнения буфера сокета у меня проблемный. Никак не могу понять как эту сволочь очистить когда я хочу.
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 766
Зарегистрирован: 20.07.2013 01:04:30

Re: Клиент-серверное приложение

Сообщение delphius » 15.08.2023 14:25:19

Sharfik писал(а):Вот я и решил подойти со стороны готового решения

А используется в примере что-то на базе этого набора?

А, перечитал, двухзвенка...

Добавлено спустя 1 час 33 минуты 18 секунд:
Alex2013 писал(а):Пишем простой веб-сервер с применением того-же indy 10 а клиент засовываем банальный html-вьювер

Рабочий вариант, но с двух сторон есть узкие места, с одной стороны веб сервер как таковой (на сервере), а с другой стороны (на клиенте) вьюер.

Если опираться на общепринятые на данный момент способы реализации, то похожая, но более универсальная схема трехзвенки будет представлять собой Сервер БД -> Мост --> REST API -> http + json -> Клиент.
Можно спокойно реализовать на чистом fpc, например с помощью SQLDBRestBrige

Примеры тут и тут

Upd. Все примеры работают, проверил, но все надо допиливать, как всегда :mrgreen:

Клиент в такой схеме можно реализовать любым способом, так как будет использоваться обычный json over http от rest api

Если нужен более полный контроль и оперативный двухсторонний обмен по постоянному соединению, а клиенты будут не только в локальной сети, но и удаленные, то можно реализовать с помощью вебсокетов, в транке fpc уже есть модули
delphius
постоялец
 
Сообщения: 122
Зарегистрирован: 18.03.2020 13:40:11


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 127

Рейтинг@Mail.ru