Можно ли создать WCF ServiceHost с несколькими режимами параллелизма?
У меня есть узел службы с несколькими объектами OperationContracts.Я хочу, чтобы некоторые из них работали параллельно, а некоторые - в одном режиме.
Пример:
[OperationContract]
Response Foo(Transaction t);
[OperationContract]
Response Bar(Transaction t);
[OperationContract]
Response FortyTwo(Transaction t);
Я хочу звонить на Foo и Bar для обработки в параллель и FortyTwo для обработки в последовательности.Таким образом, если несколько параллельных вызовов поступают в Foo и Bar, они запускают новые экземпляры, которые их обрабатывают.Если несколько вызовов поступают на FortyTwo , я хочу, чтобы они обрабатывались последовательно.
Я могу управлять этим с помощью атрибутов ServiceBehaviorAttributes, как это
var sba = _serviceHost.Description.Behaviors.Find<ServiceBehaviorAttribute>();
if (sba == null)
{
sba = new ServiceBehaviorAttribute();
_serviceHost.Description.Behaviors.Add(sba);
}
sba.MaxItemsInObjectGraph = int.MaxValue;
sba.InstanceContextMode = InstanceContextMode.PerCall;
sba.ConcurrencyMode = ConcurrencyMode.Multiple;
Но это длявесь сервисхост.Есть ли способ установить режим параллелизма для каждого OperationContract?Я выглядел удушливым, но я не уверен, что что-то пропустил, но я не мог понять, как я мог бы использовать это для своих нужд.
Я создаю свой сервисХост, как этот, если это имеет значение.
WSHttpBinding binding = new WSHttpBinding();
_serviceHost.AddServiceEndpoint(typeof(IService), binding, "");
_serviceHost.Open();