Многопоточная клиент-серверная веб-служба - обеспечение безопасности данных на стороне сервера - PullRequest
2 голосов
/ 17 марта 2009

Я реализую многопоточный веб-сервис. Поток создается для каждого входящего запроса. Для каждого клиента создается сеанс, и каждый сеанс содержит раздел данных - скажем, дерево DOM. Клиентские запросы в основном будут методами get / set, а сервер будет читать / записывать DOM.

То есть данные DOM для каждого клиента.

Теперь мой вопрос: должен ли сервер рассматривать это дерево DOM как критическую секцию?

По сути, вопрос в том, будет ли сценарий, когда на сервере есть два потока, обслуживающих одного и того же клиента?

Запрос / ответ являются SOAP через tcp. Насколько я понимаю, клиент tcp не может отправлять одновременные запросы, даже если клиент многопоточный. Поэтому на стороне сервера у меня не будет ситуации, когда два потока предназначены для одного и того же клиента. Пожалуйста, исправьте меня, если я ошибаюсь, я новичок в программировании клиент-сервер TCP / IP.

Спасибо.

Ответы [ 3 ]

1 голос
/ 01 апреля 2009

Насколько я понимаю, клиент tcp не может отправлять одновременные запросы, даже если клиент многопоточный.

?? откуда это взялось?

В HTTP, который, конечно, основан на TCP, ожидаются параллельные клиентские запросы. RFC2616 говорит, что клиенты HTTP (браузеры, клиенты REST и т. Д.) ДОЛЖНЫ ограничивают количество одновременных исходящих запросов для конкретного сервера до 2. Но это не является жестким требованием протокола, и это руководство иногда целенаправленно не соблюдается в некоторых архитектурах.

Я поднимаю это только для иллюстрации того, что сам TCP поддерживает множественные одновременные исходящие запросы клиентов. В общем случае TCP-клиент может открыть множество исходящих запросов одновременно.

Возможно, что используемая вами коммуникационная среда не поддерживает множественные одновременные исходящие запросы клиентов. Но это другое дело.

0 голосов
/ 25 марта 2009

вам нужно проверить это с документацией вашего сервера. расширенный сервер, скорее всего, позволяет настроить стратегию обработки запросов (например, последовательный, поток на соединение, поток на запрос, пулы потоков и т. д.).

Боюсь, что клиент может отправлять одновременные запросы, если он многопоточный.

0 голосов
/ 17 марта 2009

Вы должны принять во внимание, что поток на запрос не будет хорошо масштабироваться для более высокой частоты запросов, вы будете терять большую часть времени при переключении потоков

...