0

我只是通过设置我的服务的实例上下文模式的可能性,我有两个选项。

1) 将 InstanceContext 模式设置为单 2) 将 InstanceContext 模式设置为 PerCall 并将 MaxConcurrentCalls 设置为 1

使用第一个选项,我必须在服务的关键部分应用同步,但使用第二个选项我不必这样做。

哪个选项更可取,请指导。

4

1 回答 1

2

使用第一个选项,我必须在服务的关键部分应用同步,但使用第二个选项我不必这样做。

如果设置MaxConcurrentCalls为 1,您将只有一个活动呼叫,这意味着您不需要同步独立于InstanceContext.

如果MaxConcurrentCalls大于 1,则:

  • 使用 InstanceContext = Single,并发调用将共享服务类的同一个实例。因此,在访问服务类的实例成员以及访问其他共享资源(例如静态属性)时,您将需要同步。

  • 使用 InstanceContext = PerCall,每个调用都将获得自己的服务类实例。因此,您在访问服务类的实例成员时不需要同步。但是,在访问其他共享资源(例如静态属性)时,您将需要同步。

至于哪个更可取,这取决于您的服务类是否具有 per-call 实例成员。

于 2013-06-01T15:52:10.663 回答