具有多个并发模式的WCF服务主机?

时间:2019-09-20 13:48:57

标签: wcf concurrency servicehost

是否可以创建具有多种并发模式的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();

0 个答案:

没有答案
相关问题