none
WPF 어플리케이션 시작시 느린 속도문제(UnityContainer 사용중) RRS feed

  • 질문

  • 안녕하세요~

    몇일째 이문제 때문에 미치겠습니다. 

    WPF기반 프로젝트를 진행중입니다.

    UnityContainer를 쓰고 있구요... 

    어플리케이션 실행시에 실행되는 속도가 사용자PC마다 차이가 있어서 원인을 모르겠습니다.

    3초 걸리는 pc도 있고, 2분 걸리는 놈도 있습니다. ㅠ

    splash 이미지를 추가해보면 splash는 화면에 빨리 나타납니다.

    그리고, 직접 splash를 만들어서 로딩되는 모듈을 표시 해주었습니다.

    처음 splash이미지가 화면에 나타나고 제가 만든 splash가 나타나는데 까지 3초~2분 걸립니다.

    제 pc에서도 17초 걸립니다. BootStrapper에서 로딩하는 모듈이 12개 인데, 다빼고 1개만 로딩해도 속도는 마찬가지 입니다.


    답답해서 새벽6시에 질문 남깁니다.
    2012년 3월 19일 월요일 오후 9:14

답변

  • 우선 Fiddler를 사용하여 HTTP 호출을 확인해보시기 바랍니다.
    만약 ClickOnce 업데이트 체크에 대한 Request/Response가 오래 걸린다면 네트워크와 관련된 문제일 것입니다.

    그러나 만약 ClickOnce 체크 자체는 빨리 수행되며, 특정 PC에 따라서 말씀하시는대로의 편차를 보인다면..
    경험상 가장 의심이 되는 것 중 하나가 Anti-Virus 프로그램입니다.
    특히 국산 Anti-Virus 프로그램들 중 일부의 경우, ClickOnce 사용 시에 정상적인 실행을 방해하는 경우를 많이 보았습니다.
    문제가 되는 PC(특히 1분 50초가 걸리는 XP PC)에 Anti-Virus 프로그램을 확인해보시고, 실시간 감시 기능을 끈 후 확인해보시기 바랍니다.

    Anti-Virus 문제로 확인되었을 경우,
    해결 가능한 방법은 Anti-Virus의 실시간 감시에서 ClickOnce의 Core Engine인 dfsvc.exe 및 Application에 대한 예외처리를 하는 방법이 있습니다.
    하지만, 만약 예외 처리를 System Management S/W 등에서 일괄적으로 할 수 없다면 이도 조금 문제가 될 가능성이 있습니다.

    이러할 경우, 만약 업데이트 체크를 굳이 매번, 즉시 확인할 방법이 없다면 업데이트 체크를 자동이 아닌 Programmatic한 방법으로 직접 처리하는 수가 있습니다.
    업데이트 체크 시 동기방식이 아닌 비동기로 호출하는 방법 있습니다.

    이도 어렵다면, ClickOnce 대신 다른 방식을 사용하셔야 할 것 같습니다. Updator Block이나 직접 구현하시거나.. -.-;

    • 답변으로 표시됨 always newbie 2012년 4월 17일 화요일 오전 2:25
    2012년 3월 27일 화요일 오전 9:33

모든 응답

  • 안녕하십니까? always newbie 님,
    Microsoft MSDN의 Forum 사이트를 방문해 주셔서 감사합니다.
     
    고객님께서 문의 주신 "WPF 어플리케이션 시작시 느린 속도문제(UnityContainer 사용중)"에 대해 기술 문서 및 내부 자료를 Research 해보았으나, 알려진 이슈 사항은 확인되지 않았습니다.

    문의하신 내용에 대해서는 아래의 내용을 참고해서 진행을 부탁 드리겠습니다.

    기술지원 서비스 안내
    고객지원센터 1577-9700 (국내), 82-2-567-7881(해외)

    2012년 3월 21일 수요일 오전 4:37
    중재자
  • 여러가지 테스트를 해본결과

    문제는  ClickOnce 또는 윈도우의 네트워크관련 설정 인것 같습니다.

    ClickOnce를 이용하여 배포하였고, 어플리케이션 시작후 업데이트를 첵크하도록 해놓았습니다.(1일간격으로 확인하도록 해도 증상은 같습니다)

    증상은 네트워크카드를 비활성화(네트워크차단) 하면 바로 실행이 됩니다.

    하지만 네트웍이 가능할때는 PC마다 다른 속도를 보여줍니다. 

    - 한 Windows XP PC는 네트워크활성/비활성에 관계없이 2~3초 걸립니다.

    - 다른 Windows XP PC는 네트워크활성화시 1분50초가 걸리고, 비활성화시 2~3초가 걸립니다.

    - Windows 7의 경우 네트워크활성화시 15~17초 걸리고, 비활성화시 1~2초 걸립니다.

    내일은 패킷을 잡아서 확인해볼려고 합니다. (사내 PC라 프로그램 설치가 쉽지 않습니다.)

    바쁘시겠지만 답변 부탁드립니다. 프로젝트 일정이 지연되고 있어 마음이 급합니다. 부탁드립니다.

    2012년 3월 21일 수요일 오후 2:20
  • 우선 Fiddler를 사용하여 HTTP 호출을 확인해보시기 바랍니다.
    만약 ClickOnce 업데이트 체크에 대한 Request/Response가 오래 걸린다면 네트워크와 관련된 문제일 것입니다.

    그러나 만약 ClickOnce 체크 자체는 빨리 수행되며, 특정 PC에 따라서 말씀하시는대로의 편차를 보인다면..
    경험상 가장 의심이 되는 것 중 하나가 Anti-Virus 프로그램입니다.
    특히 국산 Anti-Virus 프로그램들 중 일부의 경우, ClickOnce 사용 시에 정상적인 실행을 방해하는 경우를 많이 보았습니다.
    문제가 되는 PC(특히 1분 50초가 걸리는 XP PC)에 Anti-Virus 프로그램을 확인해보시고, 실시간 감시 기능을 끈 후 확인해보시기 바랍니다.

    Anti-Virus 문제로 확인되었을 경우,
    해결 가능한 방법은 Anti-Virus의 실시간 감시에서 ClickOnce의 Core Engine인 dfsvc.exe 및 Application에 대한 예외처리를 하는 방법이 있습니다.
    하지만, 만약 예외 처리를 System Management S/W 등에서 일괄적으로 할 수 없다면 이도 조금 문제가 될 가능성이 있습니다.

    이러할 경우, 만약 업데이트 체크를 굳이 매번, 즉시 확인할 방법이 없다면 업데이트 체크를 자동이 아닌 Programmatic한 방법으로 직접 처리하는 수가 있습니다.
    업데이트 체크 시 동기방식이 아닌 비동기로 호출하는 방법 있습니다.

    이도 어렵다면, ClickOnce 대신 다른 방식을 사용하셔야 할 것 같습니다. Updator Block이나 직접 구현하시거나.. -.-;

    • 답변으로 표시됨 always newbie 2012년 4월 17일 화요일 오전 2:25
    2012년 3월 27일 화요일 오전 9:33