WCF 및 NetTCP 서비스를 사용하는 엔터프라이즈 수준 응용 프로그램을 작성하는 중입니다. 처음에는 NetTCP를 호기심에서 선택했지만 나중에 관련 데이터 처리량으로 인해 결과를 반환하는 데 5 시간 이상이 걸리는 서비스를 가질 수 있으므로 이후에 가장 적합한 옵션으로 결정했습니다.WCF 자체 호스팅 성능
현재 내 서비스를 생성하는 방법은 여러 단계로 진행됩니다. 일부 구성 요소 (포트 번호, 연결하는 클라이언트의 서버 이름, HTTP 및 NetTCP 등을 사용할지 여부)를 지정하는 구성 요소 (System.Configuration 사용)가 있고 그 아래에 "서비스"모음이 있습니다. 그것. 예를 들어, 여기에 기본 한 모습입니다 같은 : 기본적으로
<serverConfiguration tcpListenerPortNumber="60000" httpGetEnabled="true" httpListenerPortNumber="6000" serverName="localhost" retryEnabled="true" retryInterval="5" maxRetryAttempts="3">
<services>
<add virtualDirectory="Service1" applicationName="Service1" assembly="SampleService" type="SampleService.Service1" />
</services>
</serverConfiguration>
무엇을 내 Windows 서비스가 개막과 < 서비스/> 컬렉션의 모든 것을보고 시작 시간을 단축하는 서비스마다 스레드를 생성합니다 여기에 무슨 일이 일어나고 각 스레드에는 서비스가 실제로 존재하는 AppDomain이 포함되어 있습니다. 서비스에 일종의 오류가 있으면 시스템을 중단시키지 않습니다.
"문제"는이 응용 프로그램이 약 20 개의 서비스를 호스팅하고 있으며 모든 서비스가 정상적으로 작동하려면 15-20 초가 걸립니다. 나는 스레딩과 AppDomain을 그 값 (각 서비스가 순차적으로 열렸을 때 잠깐 동안 걸리는 데 사용됨)까지 끌어 내려고했지만 실제로는 훨씬 빨라질 수 있다고 생각합니다.
누구든지 의견이 있으십니까? Google 빙 (Bing)은 하나의 서비스를 호스팅하기위한 수많은 예제를 가지고 있지만 실제 응용 프로그램에 대해서는별로 찾아 내지 못하고 있습니다. (슬프게도 "Hello World"는 최종 사용자에게 호소력이 없습니다). 현재 Windows 서비스 및 NetTCP를 통해 여러 서비스를 호스팅하고 계시다면 어떻게 하시겠습니까? 전화가 5+ 시간이 걸릴 수 있습니다 경우
는 첫째, 나는/큐잉을 고려 건축 양식을 다시 부를 것이다 :
더 빨라야합니까? 하루에 한 번만 시작하면 하루에 20 초입니다. 그것은 오랜 시간이 아닙니다. –
주로 디버깅하는 동안 속도가 느려져 성능이 저하되는 주요 영역입니다. 서비스 자체는 무기한으로 실행됩니다 (재부팅 등은 제외). – RubyHaus