Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.10.31;
Скачать: CL | DM;

Вниз

Как организовать внутренее взаимодействие в сетевом приложении?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.008 c
15-1279520001
stas
2010-07-19 10:13
2010.10.31
TWebBrowser и события элементов формы


15-1279531274
Anatoly Podgoretsky
2010-07-19 13:21
2010.10.31
Настал момент такой


3-1247144361
abhtr
2009-07-09 16:59
2010.10.31
Последняя запись в DBGride


2-1280958303
Ярослав
2010-08-05 01:45
2010.10.31
D2010 и ресурсы


15-1280090913
Jeer
2010-07-26 00:48
2010.10.31
С днем Флота !