MSDN Duplex Services
http://msdn.microsoft.com/en-us/library/ms731064.aspx
WCF : Duplex 패턴을 이용한 비동기 호출 구현
http://www.ensimple.net/enSimple/show.aspx?cnum=407&b_id=study_netfr3&page=1
InstanceContextMode
서비스 인스턴스가 언제 생성될지를 명시하는 속성으로서, 인스턴스의 생명주기 유형을 결정한다.
InstanceContextMode는 PerCall, PerSession, Single 이렇게 세게의 옵션이 존재한다.
□ PerCall : 클라이언트가 호출 할 때마다 (새로운) 서비스 인스턴스가 생성되고 호출이 완료될 때, 소멸한다.
호출 마다 새로운 인스턴스가 생성되므로 호출 간에 서비스 인스턴스 내에서(메모리 상에서) 상태 정보를 유지하는 것은 불가하다.
□ PerSession : 세션(프록시가 생성되고, Close 될 때 까지의 시간) 마다 새로운 서비스 인스턴스가 생성된다. 세션이 종료(Close) 되면 소멸한다. 세션 내에서 일어나는 호출들 간에 서비스 인스턴스 내에서(메모리 상에서) 서로 상태 정보를 공유할 수 있다.
□ Single : 오직 하나의 서비스 인스턴스 만이 모든 클라이언트로 부터의 호출을 처리한다.
서비스 인스턴스가 소멸되기 전 까지 모든 클라이언트로부터의 모든 호출은 서로 상태 정보를 공유할 수 있다.
** 첨부된 샘플에 간단한 상태 정보 유지에 대한 처리가 포함되어 있다. PerCall, PerSession에 대한 차이를 확인해 보기 바란다.
** 이와 관련해서 아주 훌륭한 글이 있다. 참조 바란다. 유경상 님의 블로그 : http://www.simpleisbest.net/articles/1731.aspx
ConcurrecyMode
ConcurrencyMode는 서비스 인스턴스가 멀티스레드로 작동할 것이지 여부를 지정하는 속성이다.
Multiple, Single, Reentrance 이렇게 세가지 모드를 지원한다.
□ Multiple : Multi-threaded 이다. 그래서 여러 호출을 동시에 처리할 수 있다. 그래서 여러 호출이 하나의 상태 정보를 동시에 공유할 수도 있다. 이때 그 상태 정보의 동기화는 개발자의 책임이다.
□ Single : Single-threaded이다. 한번에 하나의 호출만 처리한다. 서비스 인스턴스가 호출을 처리 중이면, 다른 호출은 이전 호출이 완료될 때까지 대기하게 될 것이다.
□ Reentrance : Single-threaded이다. 그러나 서비스 인스턴스가 호출 처리 중에 다른 호출이 요청되면 이를 수용할 수 있는 방식이다.
호출 처리 중에 다시 다른 호출을 처리하도록 하는 것이다. 별도의 스레드로 다른 호출을 처리하는 것이 아니라 하나의 스레드 내에서 여러 호출을 처리하는 것이므로 호출 간에 상태정보를 동기화하는 것이 중요할 수 있으며 역시 개발자 책임이다.
이는 서비스 내에서 다른 서비스를 호출하는 경우에 사용하게 되는데,
클라이언트에서 서비스1 호출 ▷서비스1에서 서비스2 호출 ▷서비스2에서 다시 서비스1을 호출(Call back) 과 같은 경우, 서비스 1이 Reentrance가 아니면 Dead lock이 발생하게 될 것이다..-_-
'C#.NET 웹서비스' 카테고리의 다른 글
WCF Data Services 퀵 스타트 // IIS Data Services 세팅 (0) | 2011.01.25 |
---|---|
[MSDN]How to: Add, Modify, and Delete Entities (WCF Data Services) (0) | 2010.10.25 |
MSDN [WCF Data Services/DataSvcUtil.exe ]수동으로 클라이언트 데이터 서비스 클래스 생성 (0) | 2010.10.20 |
메시지를 역직렬화하는 동안 포맷터에서 예외가 발생했습니다. (0) | 2010.07.22 |
[ServiceThrottlingBehavior] 서비스 성능을 조정할 수 있는 런타임 처리량 설정을 구성 (0) | 2010.05.20 |
[MSDN] WCF단방향 호출, 콜백 및 이벤트에 대해 알아야 할 점 (0) | 2010.03.15 |
WCF 주고받는데이터 정하기 (0) | 2010.02.23 |
윈도우즈 서비스 등록방법 (2) | 2009.12.24 |
[MSDN]WCF 서비스호스팅 (0) | 2009.12.23 |
[N- 티어]계층 응용 프로그램의 데이터 검색,수정,삭제 (LINQ to SQL) (0) | 2009.12.21 |