Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
2-1280992809
бумбум
2010-08-05 11:20
2010.10.31
как правильно сделать условие "или" в SQL запросе


15-1279906954
Ламо777
2010-07-23 21:42
2010.10.31
Хоть я и не моряк, но тронуло


4-1240815594
Валигози
2009-04-27 10:59
2010.10.31
Как корректно прекратить отладку?


15-1279664536
Кто б сомневался
2010-07-21 02:22
2010.10.31
Права файлов на сервере


15-1280095096
0x00FF00
2010-07-26 01:58
2010.10.31
DMClient под Linux?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский