是否可以创建具有多种并发模式的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上设置并发模式? 我看上去很节气,但是我不确定是否错过了一些东西,但看不到如何满足自己的需求。
我创建了这样的serviceHost,如果有帮助的话。
WSHttpBinding binding = new WSHttpBinding();
_serviceHost.AddServiceEndpoint(typeof(IService), binding, "");
_serviceHost.Open();