none
서비스 응답시간 RRS feed

  • 질문

  • DateTime expireTime = DateTime.Now.AddSeconds(120);
    while(client.Connected && DateTime.Now < expireTime)
    {
     if(client.Available == 0) contine;

     expireTime = Datetime.Now.AddSeconds(30);

     //To do
    }

    서비스 호출 했을 때 클라이언트가 오래기다리는걸 방지하기 위해 구현한 코드입니다.

    이보다 더 낳은 방법이 있는지 알고 싶습니다.

    2011년 10월 16일 일요일 오후 3:23

답변

  • 안녕하십니까? KCFManiaCold

    Microsoft MSDN Forum 사이트를 방문해 주셔서 감사합니다.

     

    문의 하신 서비스 응답시간에 대한 답변을 드리겠습니다.

               

    제 생각에는 임의의로 서비스 응답시간을 구현하는 것 보다는 이미 구현되어 있는 기능을 이용을 추천해드립니다.

    아래의 참고자료를 참조해서 web.configuration bining elementtimeout 속성에 값을 설정해서 기능을 사용하시기 바랍니다.

     

    참고 자료

     

    WCF Client Overview

    http://msdn.microsoft.com/en-us/library/ms735103.aspx

     

    제가 문제에 대해 더 알아야 할 것이 있다면 응답 주시면 감사하겠습니다.

    제시해 드린 답변이 도움이 되었기를 바랍니다.

     

    • 답변으로 표시됨 KCFManiaCold 2011년 10월 18일 화요일 오전 11:28
    2011년 10월 17일 월요일 오전 12:15
    중재자

모든 응답

  • 안녕하십니까? KCFManiaCold

    Microsoft MSDN Forum 사이트를 방문해 주셔서 감사합니다.

     

    문의 하신 서비스 응답시간에 대한 답변을 드리겠습니다.

               

    제 생각에는 임의의로 서비스 응답시간을 구현하는 것 보다는 이미 구현되어 있는 기능을 이용을 추천해드립니다.

    아래의 참고자료를 참조해서 web.configuration bining elementtimeout 속성에 값을 설정해서 기능을 사용하시기 바랍니다.

     

    참고 자료

     

    WCF Client Overview

    http://msdn.microsoft.com/en-us/library/ms735103.aspx

     

    제가 문제에 대해 더 알아야 할 것이 있다면 응답 주시면 감사하겠습니다.

    제시해 드린 답변이 도움이 되었기를 바랍니다.

     

    • 답변으로 표시됨 KCFManiaCold 2011년 10월 18일 화요일 오전 11:28
    2011년 10월 17일 월요일 오전 12:15
    중재자
  • 안녕하세요. Visual Studio ALM MVP 엄준일입니다.

    위의 코드는 매우 옳지 못한 코드입니다. 왜냐하면

    1. 우선 위의 코드는 ASP.NET 에서 외부 연동 값을 처리할 때 Timeout 을 처리하는 방법입니다.
    왜냐하면 ASP.NET 웹 페이지에서는 호출을 기다릴 수 있는 효과적이고 적절한 방법이 없습니다.
    (왜냐하면 Session별로 차단할 수 있지만, 미들웨어가 이것을 호출할 경우 Session 차단만으로 판단할 근거가 없기 때문이죠)

    2. 위의 코드 쓸데없이 높은 CPU 를 사용합니다. 
    Thread 와 WaitOne 등을 이용하여 비동기 대기를 하는 것이 바람직 합니다. 
    왜냐하면 비동기 대기보다 위의 루프는 엄청나게 많은 Stack을 사용하여 StackOverflow의 여지가 있으며, 성능상에 매우 비효율 적입니다.

     

    그럼 어떻게 하는 것이 좋은지 말씀드리면,

    1. SangHyuk Kim 님께서 매우 좋은 답변을 주셨고, 이 방법은 호출하는 클라이언트 측에서 Timeout 을 처리할 수 있습니다.

    2. WCF를 사용하여 서버에서 처리하는 방법인데, 클라이언트 호출마다 Timeout 설정이 필요는 없습니다. (모듈화를 잘하시면 되겠지만^^;)
        서버측에서 Timeout 을 설정하는 방법은 .NET 전문가이신 제니퍼소프트의 정성태 과장님의 블로그를 참고 하시면 됩니다.
        http://blog.naver.com/PostView.nhn?blogId=techshare&logNo=100140304914

     

    감사합니다.


    엄준일 (Junil, Um) Microsoft Visual Studio ALM MVP (Team System) Personal Blog : http://blog.powerumc.kr Visual Studio Korea Team Blog : http://vsts2010.net
    2011년 11월 1일 화요일 오후 1:55