다음과 같은 서비스가 있다고 가정 해 보겠습니다.
[ServiceBehavior(
InstanceContextMode = InstanceContextMode.Single,
ConcurrencyMode = ConcurrencyMode.Multiple
)]
class MyService { ... }
그러면 단일 인스턴스를 여러 ServiceHost
s 에 제공해도 됩니까? 처럼:
var serviceInstance = new MyService();
var host1 = new ServiceHost(serviceInstance);
host1.AddServiceEndpoint(...);
var host2 = new ServiceHost(serviceInstance);
...
기존 코드베이스에서이 서비스는 단일 ServiceHost에서만 사용됩니다. 그러나이 ConcurrencyMode
있다 Multiple
, 즉,
서비스 인스턴스는 다중 스레드입니다. 동기화가 보장되지 않습니다. 다른 스레드는 언제든지 서비스 개체를 변경할 수 있으므로 항상 동기화 및 상태 일관성을 처리해야합니다. 사용 중
이는 이미 스레드로부터 안전해야한다는 것을 의미하며 스레드 안전 각도에서 여러 ServiceHost에 제공하면 괜찮아 보입니다.
다른 이의가 있습니까?
서비스 수명 동안 서비스 상태를 변경하는 변수를 유지하지 않는 한 아무런 문제가 없습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다