5

두 끝점을 노출하는 서비스가 있다고 가정하면 첫째는 NetTCP 바인딩이고 두 번째는 HttpBinding의 특징입니다. 그들은 모두 동일한 서비스 계약을 정확히 구현합니다.WCF NetTCPBinding vs 데이터에서의 HttpBinding 차이점

전선에서 전송되는 내용의 차이점은 무엇입니까?

  • netTcp를 사용하여 내 메시지는 여전히 XML로 직렬화됩니까? 또는 내 개체의 일부 이진 표현?
  • 차이점은 무엇입니까? http 엔드 포인트는 nettcp 엔드 포인트가 다른 것을 이해하는 것처럼 http 명령 (get/post 등) 만 이해합니까?
  • 왜 nettcp는 http보다 더 효율적입니다 (이 경우에는 상호 운용성이 필요하지 않습니다) - 어디에서 오버 헤드가 발생합니까?

나는 모든 경우에 메시지가 유선에 입력되기 전에 바이너리로 변환 될 것이고, 또한 http는 네트워킹 용어로 tcp의 최상위에 위치 할 것이라고 생각한다. 그래서 http 통신을 위해 어딘가에 여분이 필요하다.

질문에 감사합니다는 조금 모호하지만 희망 누군가가 내가 반드시 특정의 인코딩을 의미하지 않는다 WCF 특정 바인딩에서 :)

답변

7

을 요청하려고 무엇을 알 수 있습니다. 다양한 바인딩을 사용하여 다양한 인코딩을 사용할 수 있습니다. Net.TCP는 기본적으로 이진 인코딩을 사용하며 (MTOM은 생각합니다) HTTP는 기본적으로 text/xml 인코딩을 사용합니다.

net.tcp를 사용하면 메시지가 보낸 사람 -> net.tcp -> receiver가됩니다. HTTP를 사용하면 발신자 -> http -> tcp -> http -> 수신자로 이동합니다. 여분의 레이어가 있습니다. tcp의 이점은 둘 다 있습니다 : 추가 레이어와 기본 인코딩 모두.

HTTP는 이진 인코딩으로 net.tcp 성능에 접근합니다.

편집 : 실제로 나는 Net.TCP에 다른 최적화가있을 수 있다고 생각합니다. WCF-WCF 통신 시나리오이므로 MS는 양쪽 끝을 모두 제어합니다.

+0

건배. 그러나 http 부분이 메시지에 대해 무엇을합니까? 어떤 종류의 http 컨테이너에 넣으시겠습니까? – Remotec

+1

HTTP를 사용하는 경우 웹 브라우저와 웹 서버 간의 협상과 매우 유사한 협상이 있습니다. TCP 연결이 만들어지고 클라이언트는 동사, URL 및 선택적으로 헤더와 본문을 보냅니다. 서버는 상태, 헤더 블록 및 본문 (성공하는 경우)으로 응답합니다. TCP 자체는 비슷한 "핸드 셰이크"(다른 프로토콜이지만). HTTP를 사용하는 경우 두 가지를 모두 수행해야합니다. – JohnC