powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Вопрос по WCF ConcurrencyMode
14 сообщений из 14, страница 1 из 1
Вопрос по WCF ConcurrencyMode
    #35946041
DEP1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем.

Много читал статей про ServiceBehaviorAttribute но никак не могу понять, если у меня
Код: plaintext
1.
InstanceContextMode = InstanceContextMode.PerCall

стоит ли дать
Код: plaintext
1.
ConcurrencyMode = ConcurrencyMode.Multiple

и вообше какие плюсы и минусы ConcurrencyMode.Multiple, или же где и какой mode лучше использовать? Извените если вопрос глупый просто никак не пойму.

Спасибо.
...
Рейтинг: 0 / 0
Вопрос по WCF ConcurrencyMode
    #35946351
Фотография Paradoxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Вопрос по WCF ConcurrencyMode
    #35946361
Gatman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скачайте книгу Essential Windows Communication Foundation Стива Резника, там страниц на 10 расписано какой мод когда использовать со всякими сравнительными табличками и т.д.
...
Рейтинг: 0 / 0
Вопрос по WCF ConcurrencyMode
    #35946427
DEP1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.
...
Рейтинг: 0 / 0
Вопрос по WCF ConcurrencyMode
    #35946530
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Paradoxx должно помочь.
Сам недавно пытался разобраться с этими атрибутами, краткое резюме на русском:
InstanceContextMode - определяет сколько экземпляров сервисного класса будут создаваться для обработки запросов клиента;
ConcurrencyMode - определяет сколько потоков будет использовать диспетчер запросов для обращения к экземплярам сервисного класса.

В связи с вышеизложенным возможны "бессмысленные" сочетания, например:
ConcurrencyMode = Single (диспетчеризируем запросы в одном потоке) и InstanceContextMode = PerCall (на каждый запрос создаем отдельный экземпляр сервисного класса) - результат должен настораживать, т.к. любой следующий запрос должен дожидаться окончания выполнения предыдущего (пока очередь диспетчера не освободится)...

Случай топиккастера: ConcurrencyMode = Multiple и InstanceContextMode = PerCall - вполне "разумное" (ИМХО) сочетание для обеспечения высокой производительности сервиса (за счет отжирания ресурсов на дополнительные экземпляры обработчиков и поддержку переключения контекстов) и простоты реализации методов без синхронизации по потокам (за счет того, что каждому запросу/потоку создается свой отдельный экземпляр).

Кажися так...
...
Рейтинг: 0 / 0
Вопрос по WCF ConcurrencyMode
    #35946791
DEP1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а если так:
Код: plaintext
1.
ConcurrencyMode = Multiple

смогут ли потоки обшатся друг с другом?
...
Рейтинг: 0 / 0
Вопрос по WCF ConcurrencyMode
    #35946818
Фотография Paradoxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DEP1а если так:
Код: plaintext
1.
ConcurrencyMode = Multiple

смогут ли потоки обшатся друг с другом?

Тоесть ? Что имеете ввиду говоря обшатся друг с другом,
ConcurrencyMode = Multiple, просто озночает что данный метод одновременно может быть вызван несколькими потоками.
...
Рейтинг: 0 / 0
Вопрос по WCF ConcurrencyMode
    #35946853
DEP1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
ConcurrencyMode = Multiple, просто озночает что данный метод одновременно может быть вызван несколькими потоками.
?
или будет вызван отдельном потоке?
...
Рейтинг: 0 / 0
Вопрос по WCF ConcurrencyMode
    #35946900
Фотография Paradoxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wintellect
Concurrency Background
Since WCF is an asynchronous messaging platform. It makes extensive use of asynchronous I/O, and as a result, each received message may be dispatched to a receiving object by different threads. This feature allows WCF to use the CPU efficiently, and as a result, allows WCF applications to scale. The WCF programming model allows developers and administrators to choose how threads are utilized when messages are dispatched through the ConcurrencyMode instance property on the ServiceBehaviorAttribute type. The possible settings are:

Single (default): only one thread may access the receiver object at a time

Multiple: multiple threads may access the receiver object concurrently

Reentrant: only one thread may access the receiver object at a time, but callbacks may re-enter that object on another thread (Useful when performing asynchronous I/O)
...
Рейтинг: 0 / 0
Вопрос по WCF ConcurrencyMode
    #35946902
Gatman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DEP1
Код: plaintext
1.
ConcurrencyMode = Multiple, просто озночает что данный метод одновременно может быть вызван несколькими потоками.
?
или будет вызван отдельном потоке?
Multiple означает, что метод может одновременно вызываться разными потоками (читать запросами к сервису). если поставить Single, и сделать метод бесконечно долгим, а потом вызвать, то второй вызов метода никогда не начнётся (в смысле сам метод не запустится). под никогда понимать - пока таймаут не вывалит
в Multiple - метод будет выполняться параллельно в двух потоках
...
Рейтинг: 0 / 0
Вопрос по WCF ConcurrencyMode
    #35946919
DEP1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ок понятно спасибо всем за ответы.
...
Рейтинг: 0 / 0
Вопрос по WCF ConcurrencyMode
    #35961899
Varcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приведу результат своего исследования принципов обработки запросов клиентов, в зависимости от того, какой аттрибут выставлен у сервисного объекта. Поведение сервисного объекта (объектов), в основном зависит от трех аттрибутов: InstanceContextMode, ConcurrencyMode, UseSynchronizationContext. В след. таблице показано влияние этих аттрибутов на порядок обработки запросов:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
ICM        CM        USC     MClient MCall Scheme	
PerCall    Single    false   +       -		
PerCall    Single    true    -       -     1-2-1-2	
PerCall    Multiple  false   +       +    
PerCall    Multiple  true    -       -     1-1-2-2	
PerSession Single    false   +       -		
PerSession Single    true    -       -     1-2-1-2	
PerSession Multiple  false   +       +		
PerSession Multiple  true    -       -     1-1-2-2	
Single     Single    false   -       -     1-2-1-2*	
Single     Single    true    -       -     1-2-1-2	
Single     Multiple  false   +       +	
Single     Multiple  true    -       -     1-1-2-2
*На каждого клиента выделяется отдельный поток. Все запросы всех киентов, тем не менее, выполняются в порядке одной очереди.
В таблице:
ICM - аттрибут InstanceContextMode
CM - аттрибут ConcurrencyMode
USC - аттрибут UseSynchronizationContext
MClient - MultiClient - условное название ситуации, когда к хосту присоединены несколько клиентов, и они параллельно делают запросы. Плюс означает, что все запросы обрабатываются параллельно (в разных потоках), минус - ставятся в очередь (обрабатываются одним, главным потоком).
MCall - MultiCall - условное название ситуации, когда один клиент делает несколько параллельных запросов к хосту (из разных потоков, либо методы контракта помечены как IsOneWay). Плюс означает, что все запросы обрабатываются параллельно (в разных потоках), минус - ставятся в очередь (обрабатываются одним, главным потоком).
Scheme - порядок обработки очереди запросов, в случае когда сначала один клиент делает несколько параллельных запросов, потом второй несколько паралельных: 1-2-1-2 - сначала первый запрос первого клиента, потом первый запрос второго клиента, потом второй запрос первого клиента, потом второй запрос второго клиента и т.д., 1-1-2-2 - сначала обрабатываются все запросы первого клиента, потом все запросы второго клиента и т.д.
...
Рейтинг: 0 / 0
Вопрос по WCF ConcurrencyMode
    #35961962
Varcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После нормализации таблицы получилась такая картина:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
USC     CM        ICM        MClient MCall Scheme	
false   Single    PerCall    +       -		
false   Single    PerSession +       -		
false   Single    Single     -       -     1-2-1-2*	
false   Multiple  x          +       +    
true    Single    x          -       -     1-2-1-2	
true    Multiple  x          -       -     1-1-2-2	
*На каждого клиента выделяется отдельный поток. Все запросы всех киентов, тем не менее, выполняются в порядке одной очереди.
...
Рейтинг: 0 / 0
Вопрос по WCF ConcurrencyMode
    #35962622
DEP1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
ICM        CM        USC     MClient MCall Scheme	
PerCall    Multiple  false       +       +    

то что надо :)
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Вопрос по WCF ConcurrencyMode
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]