2010-02-16 3 views
5

동료와 나는 "비용"이라는 주제가 제기 될 때 WFC 서비스에 대한 토론을하고 있습니다.비용이 많이 드는 곳 - 호스팅 된 WCF 서비스?

질문은 이것이다 :

는 IIS에서 호스팅되는 WCF 서비스와 윈도우 서비스 호스팅 WCF 서비스는 서비스가 메모리와 CPU에 관하여 더 "비싸다"입니다 똑같은 일을 수행 감안할

둘 다 동일한 부하를 수용하는 경우 순환됩니까?

우리는 초기 시작 코딩, 설치 또는 구성 (IIS가 간단한 경험을 제공하는 것으로 보여짐), 서비스 실행에 필요한 기본 비용 만 신경 쓰고 있습니다.

답변

3

필자는 구체적인 수치를 제시 할 수 없지만, 이것이 큰 걱정거리라면 반드시 성능 테스트를 수행해야합니다. 일반적인 HTTP 기반 WCF 서비스의 경우 모든 요청은 Windows의 http.sys에서 처리 된 다음 적절한 프로세스로 전달됩니다. 서비스가 IIS 또는 독립 실행 형으로 호스팅되는지 여부는 호출, 세션 별 또는 단일 구성, 요청 크기 제한 및 요청 제한과 관련하여 사용하는 WCF 관련 구성 설정만큼 중요하지 않습니다.

필자는 유용성에 중점을두고 성능 수치보다 엄격하게 정의해야합니다. 왜냐하면 성능이 거의 동일해야하기 때문입니다.

결론 : 필요한 경우 더 편리하고 성능적인 테스트를 사용하십시오.

+0

OK .. 그렇기 때문에 어떤 실제 병목 현상이 바인딩에 사용되는 특정 설정을 구성에 사용한다는 데 동의합니다. WCF를 두 가지 서비스 스타일 모두에서 사용하는 동안, 나는 성능이 서비스 내용 이외의 다른 요인들과 설정 스타일과 관련이 있다는 것에 동의하게되었습니다. 브래드에게 감사드립니다. –

2

WCF에 대한 IIS 또는 Windows 서비스 기반 호스팅 사이에 매우 중요한 성능 고려 사항 중 하나는 바인딩 유형입니다. IIS는 wsHttpBinding과 같이 HTTP를 통해 작동하는 WCF 바인딩 만 지원합니다. basicHttpBinding

HTTP가 아닌 바인딩은 일반적으로 같은 netTcpBinding으로 더 나은 성능을 가질 것으로 알려져있다 (내가 믿는 WCF 기반하는 서비스와 클라이언트 모두 필요) 또는 netNamedPipeBinding (빠른하지만 서비스/클라이언트에 있어야합니다 같은 기계). 이것들은 물론, 특히 유연성과 관련하여 그들 자신의 제한이 있습니다.

여기 좋은 개요입니다 : http://weblogs.asp.net/spano/archive/2007/10/02/choosing-the-right-wcf-binding.aspx

가 여기에 매우 유사한 논의하고있다 : WCF Binding Performance

2

나는이 완전히 귀하의 질문에 대답하지 않습니다 알지만, 내 경험을 공유하고 싶습니다.

IIS에서 호스팅되는 WCF 서비스를 예약 할 때 Windows 콘솔 응용 프로그램이 있습니다. 이 아키텍처에서 IIS는 실제로 완전히 불필요하며 전체 솔루션에 대한 추가 구성 요소입니다. 마케팅 목적으로, 기술적 인 이유가 아니라 제품을 강화하기 위해 솔루션에 실제로 포함되었습니다.

내가 직면 한 주요 문제는 기술적 이유로 IIS를 사용하지 않아야하는 이유이며 이는 내 경험에 적용됩니다. 참고 : IIS에서 WCF 서비스를 호스팅하는 것은 나쁜 생각입니다. 나는 현재 일하고있는 제품에서 내 생각을 전하고있다.

  1. 루프에 IIS가 있으면 전체 솔루션에 다른 시스템이 있음을 의미합니다. 이는 차례로 배포를 복잡하게 만듭니다. 일부 클라이언트는 IIS6 다른 7을 실행합니다. 이러한 차이는 표면적으로 작게 보일 수 있지만. 실수를하지 마십시오. 여전히 다릅니다. 다른 클라이언트에 제품을 배포하는 경우 환경 차이에 대한 잠재력이 더 커집니다.이러한 차이를 과소 평가하지 마십시오. 필자는 클라이언트가 SharePoint 사이트 모음 (내 사이트)에서 내 WCF 서비스를 실행하려고 시도하고 있습니다. 요점은 잘못 될 수 있다고 생각하는 것보다 훨씬 많습니다.
  2. 또한 IIS에는 AppPool 고려 사항이 있으며 제품의 복잡성에 따라 구성해야 할 수도 있습니다. AppPool은 실행하기 위해 ID가 필요하므로 전체 솔루션에 다시 복잡성이 추가됩니다.
  3. 단일 스레드 서비스에 때때로 "흥미로운"스레드 중단 메시지가있는 문제가있었습니다. 나는 여전히 정확한 원인을 찾아 내려고 노력하고 있지만, 내 마음 속에서 나는 이것이 IIS와 관련이 없다고 진심으로 희망하고있다. 요점은 전체 솔루션에서 IIS를 제거한 경우에는이 고려 사항이 없다는 것입니다.
  4. IIS가 WCF 서비스와 자체 호스팅의보다 강력한 호스팅 환경이라는 논의를 들었습니다. 나는 이것이 어떤 무게든지다는 것을 완전히 확신하지 않는다. 자신이하는 일이 무엇인지 안다면 자체 호스팅 서비스가 신뢰할 수없는 이유가 없어야합니다. 하지만 나는 WP 재활용과 같이 IIS에서 자동으로 구현되는 기능 중 일부를 구현하는 것이 더 효과적이라고 생각합니다.
  5. 전반적으로 IIS에 만족하지는 않지만 배포를 위해 제품을 넘겨 줄 때 어려움을 겪습니다. 강력한 기술적 배경이없는 컨설턴트는 IIS 응용 프로그램을 설정해야합니다. 보통 무언가 잘못 될 수 있고 잘못 될 것이며 더 많은 기술 경험을 가진 사람이 들어가서 해결할 것입니다. 자체 호스팅을하는 경우 배포를 위해 앱을 훨씬 쉽게 패키징 할 수 있습니다.
  6. 반복해서 말씀 드려서 죄송합니다. IIS의 경우, 비즈니스 측면에서 앱을 하나의 비즈니스 단위로만 볼 수는 있지만 전체 복잡성을 이해하지 못하더라도 솔루션에 2 개가 아닌 1 개가 있습니다. 구현중인 솔루션의 예를 들면 : 왜 2 개의 설정 파일이 있습니까? 왜 메일을 두 번 구성해야합니까? 왜 우리는 DLL을 2 개 위치에 배포해야합니까? 이 질문들은 많이 묻습니다.
  7. 마지막으로 원격으로 또는 VPN을 통해 클라이언트에 배포하는 경우 상황이 더욱 악화되고 때로는 컨설턴트가 민감하지 않은 영역에 액세스 할 수 있다고 언급했습니다. 개발자가 전체 솔루션에서 최대한 많은 수하물을 제거하려고합니다. 또한 시스템 관리자가 때때로 편리한 IIS 재설정을 실행할 수 있다고 언급합니다. 앱이 다른 사람들과 함께 호스팅되는 경우 서비스를 재설정합니다.

내 경험이 적은 시스템은 적지 만 잘못 될 수 있습니다. 그러나 신뢰할 수있는 자체 호스팅 서비스를 구현할 기술이 있는지 결정해야합니다. 이것은 차례로 개발, 배치 및 유지 보수 비용과 직접 관련이 있습니다.

관련 문제