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

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

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

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

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

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

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

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

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

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

Тоесть ? Что имеете ввиду говоря обшатся друг с другом,
ConcurrencyMode = Multiple, просто озночает что данный метод одновременно может быть вызван несколькими потоками.
...
Рейтинг: 0 / 0
22.04.2009, 13:18
    #35946853
DEP1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по WCF ConcurrencyMode
Код: plaintext
1.
ConcurrencyMode = Multiple, просто озночает что данный метод одновременно может быть вызван несколькими потоками.
?
или будет вызван отдельном потоке?
...
Рейтинг: 0 / 0
22.04.2009, 13:31
    #35946900
Paradoxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по WCF ConcurrencyMode
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
22.04.2009, 13:31
    #35946902
Gatman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по WCF ConcurrencyMode
DEP1
Код: plaintext
1.
ConcurrencyMode = Multiple, просто озночает что данный метод одновременно может быть вызван несколькими потоками.
?
или будет вызван отдельном потоке?
Multiple означает, что метод может одновременно вызываться разными потоками (читать запросами к сервису). если поставить Single, и сделать метод бесконечно долгим, а потом вызвать, то второй вызов метода никогда не начнётся (в смысле сам метод не запустится). под никогда понимать - пока таймаут не вывалит
в Multiple - метод будет выполняться параллельно в двух потоках
...
Рейтинг: 0 / 0
22.04.2009, 13:37
    #35946919
DEP1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по WCF ConcurrencyMode
ок понятно спасибо всем за ответы.
...
Рейтинг: 0 / 0
29.04.2009, 19:05
    #35961899
Varcom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по WCF ConcurrencyMode
Приведу результат своего исследования принципов обработки запросов клиентов, в зависимости от того, какой аттрибут выставлен у сервисного объекта. Поведение сервисного объекта (объектов), в основном зависит от трех аттрибутов: 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
29.04.2009, 19:35
    #35961962
Varcom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по WCF ConcurrencyMode
После нормализации таблицы получилась такая картина:
Код: 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
30.04.2009, 09:37
    #35962622
DEP1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по WCF ConcurrencyMode
Код: plaintext
1.
2.
ICM        CM        USC     MClient MCall Scheme	
PerCall    Multiple  false       +       +    

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


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