Форум: "Прочее";
Текущий архив: 2010.10.31;
Скачать: [xml.tar.bz2];
ВнизКак организовать внутренее взаимодействие в сетевом приложении? Найти похожие ветки
← →
Knight © (2010-07-17 13:43) [0]Просьба не удалять тему, хочется разобраться до конца в данном вопросе. Все статьи, которые читал, приводятся на на самом простом уровне с такими-же простыми примерами, типа чатов, сканеров и пр.
Требуется программа с клиентом, сервером, авторизацией, автообновлением, правами доступа к базе и настраиваемым интерфейсом пользователя (частично на стороне сервера, частично самим пользователем) и ещё много чего.
Но основа этого сеть...
Не обязательно, разжёвывать тут, может у кого есть ссылки на хорошие статьи, книги, приличные исходники... сгодится всё :)
← →
Knight © (2010-07-17 13:46) [1]Да.. хотелось бы обойтись стандартными компонентами для BDS2006, на крайний случай ICS или Synaps...
← →
Иксик © (2010-07-17 17:31) [2]А оно надо? :) Может веб-клиент?
← →
Knight © (2010-07-17 17:39) [3]Оно надо... а веб-клиент нет.
← →
turbouser (2010-07-17 18:12) [4]
> Knight © (17.07.10 13:43)
Трехзвенка, значит.
Универсального решения нет, но на примере
> на самом простом уровне с такими-же простыми примерами,
> типа чатов, сканеров и пр.
вполне можно сообразить как и что делать.
Конкретных вопросов, как я понял, пока нет?
← →
Pavia © (2010-07-17 18:26) [5]Судя по всему у автора вопрос где взять готовую программу.
← →
Knight © (2010-07-19 08:51) [6]
> Конкретных вопросов, как я понял, пока нет?
Основной вопрос:
Как организовать запросы с клиента и раздачу результатов, если через единный сокет могут проходить команды от разных форм?
---
По раздаче я ответ кажется нашёл... использовать промежуточный событийный объект и регистрировать его в своеобразном списке "рассылки" на парсере входщих данных, т.е. у одного события будет не один, а несколько обработчиков.
← →
Суслик_ (2010-07-19 14:34) [7]2Автор
Думаю, что общего решения нет.
Есть типовые всякие решения.
Навскидку можно поделить на следующие классы:
1. С поддержкой соединения/без поддержки.
В первом случае коннект по сути является идентификатором клиента.
Во втором - надо идентификатор сессии передавать при каждом запросе (если, конечно, нужно различать клиентов).
2. Текстовый/бинарный протокол.
Тут, скорее, зависит от потребностей в шифровании. А также в легкости дебага.
Вообще тут соображений - море. Задавай более конкретные вопросы. Также ситуацию конкретней опиши: это локалка или интернет?
Если отвечать на "Основной вопрос:Как организовать запросы с клиента и раздачу результатов, если через единный сокет могут проходить команды от разных форм?", то я скажу так.
Сокет то один, но клиентов то много. В ICS используются асинхронные сокеты. Там есть, например, пример HTTP сервера - там показано как организована асинхронная работа. А вообще, мой совет, если хочешь использовать асинхронные сокеты и тебе не нужен протокол HTTP, то сделай все с нуля - т.е. непосредственно на функция WIN API, относящихся к сокетам. И тебе будет понятней и надежней - в этом ICS еще разобраться надо: он большой.
← →
Knight © (2010-07-23 09:39) [8]
> Суслик_ (19.07.10 14:34) [7]
Сперва тему закрыли, потом ездил в коммандировку, сразу не ответил.
Программа из двух частей, сервер и клиенты, которые могут работать как по локалке, так и через Инет. Планирую при авторизации клиента выдавать ему код сессии, т.к. соединение будет не постоянное, а с таймаутом, т.е. если какое-то время передачи данных нет, связь обрыватся, и чтобы снова не вводить логины-пароли будет использоваться код сессии, действительный, например, 1 час после последнего обращения.
Хотел уж в каждой форме использовать по сокету, но смысла в этом особенного нет, решил запустить всё основное через один, а если будут какие данные или запросы с подолжительной обработкой не связанные с основым функционалом, вынесу их в отдельный поток со своим сокетом.
Мультиобработчика сделал, пока кривовато, но работает. При создании формы она регистрирует свои обработчики в ДатаМодуле (в который запехан сокет) с привязкой к командам, при получении которых он должен запускаться. Надо доделать удаление промежуточных объектом при закрытии формы. Тут думаю добавить владельца и сделаю процедуру удаления объектов из списка "рассылки" по владельцу.
Компонеты поперебирал, но чё-то всё такое муторное... вернулся к TServerSocket и TClientSocket :)
← →
Плохиш © (2010-07-23 11:32) [9]Всё описано в "Руководстве для пользователя" D7 разделы о создании веб-сервисов.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2010.10.31;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.004 c