2012-09-10 2 views
8

이 문서 http://weblogs.asp.net/spano/archive/2007/10/02/choosing-the-right-wcf-binding.aspx을 통해 바인딩 옵션을 선택했습니다. 내가WCF - NetMsmqBinding vs NetTcpBinding

오프라인 또는 연결이 끊긴 상호 작용에 의해 평균 무엇의 이상한 의심을 가지고

, 즉 서비스를 사용하여 서비스가 아직 실행되지 않은 경우에도 클라이언트를 의미 않음 NetMsmqBinding

을 선택 ?

몇 가지 실시간 예를 공유 할 수 있습니까?

답변

9

2 개의 바인딩은 근본적으로 다릅니다.

  • NetTcpBinding는 (일반적 이진) RPC 개념과 유사한 MS 독자적인 포맷으로 간주 할 수있다 (예를 .NET Remoting을 대체하는데 사용될 수있다). 동기식입니다. 즉, 클라이언트와 서버가 동시에 온라인 상태 여야하며 클라이언트가 응답을 (거의)받습니다.

  • MSMQ은 Microsoft의 메시지 지향 미들웨어 솔루션으로 비동기식 대기열을 중심으로합니다. 클라이언트가 메시지를 보낼 때 대상 서버가 오프라인이면 서버가 다시 온라인 상태가 될 때까지 메시지가 클라이언트에 대기합니다. 각 큐는 한 가지 방법 일 뿐이지 만 서버에서 클라이언트로 두 번째 큐를 통해 양방향 통신을 수행 할 수 있습니다. WCF MSMQ 메시지를 보내려면 MSMQ 서비스가 클라이언트에 설치되어 있어야합니다. 대기열의 메시지는 배달 시간 제한을 가질 수 있습니다. 그렇지 않은 경우 적용 가능한 데드 레터 대기열에 배치됩니다.

실제 세계의 예 :

  • 나는 높은 성능을 위해 바이너리 직렬화, 마이크로 소프트 WCF 클라이언트와 서버, 예를 들면 간의 동기 통신 요구 NetTcpBinding을 사용 파일을 업로드하는 등 미디어 Xml
  • 내가 DTC와 MSMQBinding를 사용합니다 (I 동기 Xml/SOAP 메시징 wsHttpBinding을 사용, 기타) 유용하지 않을 경우 함께, (예를 들어 금융) 2 개 이상의 시스템간에 신뢰할 수있는 메시징을 보장하기 위해 사용 가능 적어도 하나의 엔드 포인트가 .Net에 있고 호환 가능한 서버 (반드시 WCF 일 필요는 없습니다. 예를 들어 또는 기타 EAI 허브 또는 MSMQ에 대한 어댑터가있는 ESB 버스, 예 : 브릿지가 MSMQ and MQSeries 사이에 있음). 일반적으로 메시지는 Xml 형식입니다.

TL;

DR

는이 서비스를 사용하여 서비스가 아직 실행되지 않은 경우에도 클라이언트를 뜻

예. MSMQ이 로컬에서 실행중인 경우 클라이언트는 즉각적인 응답 (메시지가 대기열에 있음을 나타냄)을 반환합니다. 그러나 이것은 메시지가 서버에 의해 성공적으로 수신되었음을 의미하지는 않습니다.

+1

큰 대답은 여러 복잡한 시스템에서 광범위하게 사용되는 WCF를 사용하고 두 개의 센트를 추가하고 싶다는 것입니다. 1. RESTful 웹 서비스에서 부족한 것을 제공하는 매우 구체적인 사용 사례를 제외하고는 WCF를 기본값으로 사용하지 마십시오. WCF의 두통의 9/10 배는 보상의 가치가 없습니다. 2. NetTcpBinding은 내 개인적인 경험에서 틀림없이 최고의 (그리고 가장 빠른 - 명명 된 파이프 제외) 바인딩 옵션입니다. 그러나 포스터가 설명하는대로 중복 기능이 내장되어 있지는 않습니다. –

+0

동의 함 - 4 년이 지난 xml은 이제 JSON 서비스로 대체되었으며 WebApi는 이제 RESTful 세계에서 WCF를 추가했습니다. – StuartLC