Microsoft MVP성태의 닷넷 이야기
[답변]: wcf IsOneWay 속성관련 문의 입니다.. [링크 복사], [링크+제목 복사]
조회: 9985
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
부모글 보이기/감추기
일단, IsOneWay 에 대해서 HTTP 요청과 비교해서 설명해보는 것이 좋을 것 같군요.

가령, 다음과 같은 HTTP 요청이 보통의 WCF 요청이라고 보시면 됩니다.

// http://www.codeproject.com/KB/webservices/HttpWebRequest_Response.aspx
private static void start_post()
{
    byte[]  buffer = Encoding.ASCII.GetBytes( "test=postvar&test2=another" );
    HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create("http://127.0.0.1/test.php");
    WebReq.Method = "POST";
    WebReq.ContentType ="application/x-www-form-urlencoded";
    WebReq.ContentLength = buffer.Length;
    Stream PostData = WebReq.GetRequestStream();
    PostData.Write(buffer, 0, buffer.Length);
    PostData.Close();
    HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
    Stream Answer = WebResp.GetResponseStream();
    StreamReader _Answer = new StreamReader(Answer);
    Console.WriteLine(_Answer.ReadToEnd());
}

그런데, IsOneWay가 붙은 메서드는 Request가 전달되는 것이 완료되는 것을 확인할 뿐, Response 는 확인하지 않는 것입니다. 그래서 다음과 같은 로직이라고 보시면 됩니다.

private static void start_post()
{
    byte[]  buffer = Encoding.ASCII.GetBytes( "test=postvar&test2=another" );
    HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create("http://127.0.0.1/test.php");
    WebReq.Method = "POST";
    WebReq.ContentType ="application/x-www-form-urlencoded";
    WebReq.ContentLength = buffer.Length;
    Stream PostData = WebReq.GetRequestStream();
    PostData.Write(buffer, 0, buffer.Length);
    PostData.Close();

    WebReq.Close();
}

그럼, 서버 측을 볼까요? 말씀하신 WCF 메서드를 예로 들면,

[OperationContract (IsOneWay = true)]
 void CallTest2 ()
{
    Trace.WriteLine("TEST");
}

위의 메서드가 실행되었다는 것 자체가 이미 Request 를 WCF 런타임에서 정상적으로 접수했다는 것을 의미합니다. 따라서 CallTest2가 실행되는 동안에는 이미 클라이언트와의 연결이 끊어진 상태일 수 있습니다.

대강 이해가 되셨죠?




본론으로 넘어가서.

1번 질문의 답변:
일단, string 같은 류의 자원은 별다르게 해제와 관련해서 의미가 없을 것 같고, 게다가 PerCall 서비스라면 연결 관리에 따른 자원해제는 런타임에서 의해서 자동화될 것 같은데... 음... 이 부분에서 딱히 떠오르는 것이 없군요.

2번 질문의 답변:
명백히 다르죠. 말씀하신 dead-lock 요소를 포함해서 콜백으로 받으면 문제가 훨씬 더 복잡해집니다. (물론, 설정만 잘하면 '리턴'이나 '콜백'이나 유사한 효과를 얻겠지만.) 참고로, dead-lock은 설정만 정상적으로 되면 해결이 가능하지만, 지금 겪고 계신 문제에서는 콜백으로 처리할 이유가 전혀 없으므로 생각하지 않는 것이 좋겠습니다.

참고로, 혹시 서버를 Windows 7 과 같은 클라이언트 용 OS에서 테스트 하셨나요? Windos 7 과 같은 경우, 동시 접속이 10 개 이상 안되는데, 아래의 동영상 화면이 그에 해당합니다.

제니퍼: 7. 성능 관리 퀴즈 첫번째 문제 (닷넷 개발자 컨퍼런스)
; https://www.sysnet.pe.kr/2/0/875

일단, IsOneWay에서는 잘 되었다는 것을 보면 어떤 이유에서든지 세션 관리에 문제가 있는 것 같긴 한데... 말씀해 주신 현상만으로 어떻게 단정지어서 해결책을 제시하기가 난감하군요. ^^;

별로 답변이 안 된 것 같은데, 혹시 괜찮다면 테스트 하신 소스 코드 처럼 간단한 유형으로 된 WCF 프로젝트를 저에게 보내주시면 테스트 해보겠습니다.




donaricano-btn



[최초 등록일: ]
[최종 수정일: 4/18/2011 ]


비밀번호

댓글 쓴 사람
 




... [46]  47  48  49  50  51  52  53  54  55  56  57  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
997조장원11/7/20114837Silverlight 에서의 Auth 방법에 대한 고찰 [2]파일 다운로드1
996파몽11/3/20118347VS2010 에서 타겟플랫폼이 x86으로 변경이 된걸일까요? [2]
995강신명10/24/20115001sharepoint2010+win7 client 오류 [2]파일 다운로드1
992라이언10/11/20115779캡션에 chapter numbers 넣기
993정성태10/11/20117579    답변글 [답변]: 캡션에 chapter numbers 넣기
991우상욱8/21/20119362세션 타임 아웃에 관해서 질문드립니다. [2]
990김재영8/20/201112537VS2010의 윈폼의 Load이벤트에서 예외가 잡혀지지 않습니다. [3]파일 다운로드1
989우상욱8/20/20115889polling에 대해 감이 안잡혀서 질문드립니다 [1]
988WooYoung Moon8/17/20116731성태님~ 작은 부탁 하나 있습니다~ [2]
987에스패스트8/3/20117723비밀글쓰기가 있으면 참좋을탠대 아쉽네요 ^^ 저 한가지만더.. [5]
986에스패스트8/3/201110358안녕하세요 ^^ 이렇곧도 있군요 ~ 참좋네요 질문 한가지 여쭤볼게요 [6]
985이성환7/28/20117247P/Inovke 관련 질문입니다. [4]파일 다운로드1
983이성환7/13/201113427Mouse이벤트 관련해서 질문있습니다. [10]파일 다운로드2
982궁굼이7/12/20116948TFS2010 사용관련 [2]
981김창욱7/11/20118409주식형태의 프로그램 처럼 SQL서버의 특정 필드 데이터의 변화가 있을때 재 클라이언트가 정보를 갱신 할 수 있게 하는 방법은 없을까요? [2]
980YJ7/7/20117961App Pool idle time 과 WCF 서비스의 비동기 function 호출. [3]
979왕초보7/1/20117109Apache + IIS Redirect [2]
9776/16/201111043웹컨트롤 어느거 쓰는게 좋나요 [1]
976박성준6/13/20118148VS2008 Add-in 구현 관련 질문 [4]
972김길6/6/20119449메모리 해제 예외 처리 관련.. [2]
971강동원5/29/20117834firebird install건 [1]
970임동찬5/18/20118021ASP.net 솔루션 디버깅 관련 [1]
969이성환5/4/201110542WMI 를 사용하지 않고 하드웨어 정보를 가져올 수 없을까요? [3]
968김동미4/28/20119679안녕하세요 다시 한번 문의를 드립니다.. [2]파일 다운로드1
967임동찬4/22/201110538C# using문 관련 [9]
964김동미4/18/20118882wcf IsOneWay 속성관련 문의 입니다..
... [46]  47  48  49  50  51  52  53  54  55  56  57  58  59  60  ...