2014-07-14 2 views
1

WCF 서비스 인스턴스간에 데이터를 공유 할 수 있습니까? InstanceContextMode.PerCall을 사용할 때 인스턴스에 쓰고 읽을 공유 목록이 있어야합니까?WCF InstanceContextMode.PerCall, 호출간에 공유

편집

@usr 아이디어를 사용하여 나는 WCF 서비스는 메시지를 등록 할 경우 대기열이있는 싱글 톤 클래스를 생성하고, 싱글 톤 클래스에서 나는 대기열에서 메시지를 사용하는 실행중인 스레드가 , 생산자/소비자 문제.

답변

1

서비스 클래스와 다른 클래스에서 공유 데이터를 유지 관리하고 서비스 클래스를 상태 비 저장으로 만듭니다. 상태없는 서비스는 싱글 톤 인스턴스를 가져 와서 사용할 수 있습니다.

여기 스케치입니다 :

class MySingleton { 
//You can use any lazy initialization logic you like 
//I just used a static initializer as an example 
public static readonly MySingleton Instance = new ...(); 

//Move all static data into this class 
//Use it from anywhere you like 
} 

class MyWcfService { 
//This WCF service has no state 
//Any instancing mode will do 
public void SomeServiceMethod() { 
    MySingleton.Instance.DoSomething(); 
} 
} 

이 문제와 아무 상관이있다 : 상태 유지 웹 서비스 및 웹 응용 프로그램은 피해야한다. 응용 프로그램이 언제든지 종료 될 것이라고 가정해야합니다 (예 : 정전, 충돌, 버그 등). 또한 일반적으로 응용 프로그램을 여러 번 인스턴스화하는 고 가용성 솔루션이 필요합니다.

+0

Windows 서비스에서 내 WCF 서비스를 호스팅합니다. WCF 서비스가 아닌 Windows 서비스 수준에서 데이터를 가져올 수있는 솔루션 일 수도 있습니다. – danrt

+0

그래, 그것도 의미가있다. 서비스 클래스에 공유 데이터에 대한 참조를 어떻게 든 제공하면됩니다. 정적 변수는이를 수행하는 쉬운 방법입니다. – usr

+0

네,이 문제를 해결할 수 있지만 WCF 데이터를 보낼 수있는 방법을 찾을 수 없습니다. – danrt

관련 문제