2010-12-29 4 views
17

나는 Michele Leroux Bustamante의 < Learning WCF를 읽고 있습니다. 이 책에서는 net.tcp 프로토콜에 관해서는 작성자가 TCP라고 말합니다. 따라서 net.tcp과 유명한 TCP 프로토콜의 차이점은 무엇입니까? net.tcp와 TCP 프로토콜의 차이점은 무엇입니까?

그리고 접두사가 의미하는 무엇을 net.msmq, net.pipe, 같이

?

감사합니다.

+0

왜이 질문에 대한 현상금을 시작할 수 있습니까? 시작 현상금 버튼을 보지 못했습니다. – smwikipedia

+1

net.tcp는 URI 체계이며 TCP는 유일한 프로토콜입니다. 이것은 WCF가 기본 바인딩을 사용할 때 .NET 프레이밍 바이너리 프로토콜을 사용하여 TCP를 통해 WCF 메시지를 받거나 보내는데 사용됩니다. 이 포트의 기본값은 포트 808이며 프레이밍 형식은 .net 2 진 메시지 프레이밍을 사용합니다. – Sajay

답변

1

접두어 .net은 프레임 워크 작성자가 복잡성을 숨기고 개발자가 쉽게 사용할 수 있도록 API를 제공하기 위해 프로토콜을 래핑했다고 제안합니다.

+0

내 게시물을 보내 주셔서 감사합니다. 그래서 net.tcp와 TCP는 본질적으로 같은 것이다. – smwikipedia

+0

아니, 나는 그 말을하지 않았다. 나는 net.tcp가 TCP에 대한 래퍼라고 추측했다. 한 번 훑어보고 올바른지 확인하십시오. – duffymo

2

이러한 프로토콜은 WCF 통신의 추가 옵션으로 Microsoft 스택 내에 설정됩니다. 기본적으로 통신을 위해 서비스에 사용할 수있는 도구입니다. 그러나 각 사용자에게는 다양한 이점이 있지만 Microsoft에서 WCF에 대해 제시 한 net * 프로토콜은 해당 서비스의 WCF (및 비 Microsoft) 사용자와 잘 작동하지 않습니다. 상호 운용성이 중요하다면 나중에 두통이 생길 수 있습니다.

4

net.tcp는 WCF (서비스 모델) 네임 스페이스에 있습니다. 그것은 많은 클래스에 의해 표현되며, 가장 눈에 보이는 것은 NetTcpBinding Class입니다. 따라서 본질적으로 net.tcp는 WCF 바인딩입니다 ('컴퓨터 간 통신에 적합한 안전하고 안정적인 바인딩').

net.tcp는 WCF 컨텍스트에서만 사용할 수 있으며 TCP 프로토콜을 기반으로하여 간단히 입니다. 하지만 net.tcp = TCP라고 말할 수는 없습니다. net.tcp는 단지 TCP를 사용합니다. 다른 바인딩과 비교할 때 성능이 뛰어나지 만 상호 운용이 불가능한 것으로 간주됩니다.

이야기는 net.pipe, net.msmq에서 동일하지만 낮은 Windows 기술을 통해 구현 된 WCF 바인딩 인 각각 Named PipesMSMQ입니다. System-Provided Bindings

28

net.tcp 단순히 TCP를 사용하여 액세스 할 수있는 엔드 포인트를 식별하기 위해 윈도우 내에서 사용되는 URI 체계입니다 : 여기

시스템 제공 WCF 바인딩의 목록입니다.

마찬가지로 net.msmqnet.pipe은 각각 MSMQ protocolNamed Pipes protocol을 사용하는 끝점을 지정하는 URI 체계입니다.

접두사 net은 모두 URI 구성표가 Microsoft .NET 플랫폼에서만 사용되도록 고안되었으며 일반적으로 더 넓은 인터넷에서 허용되지 않음을 나타냅니다. httpftp과 같은 다른 URI 체계는 일반적으로 의미를 받아 들였으므로 접두사없이 WCF 내에서 사용됩니다. 따라서 net 접두어는 연결된 종점이 .NET 플랫폼에서 실행되고 있지 않은 다른 응용 프로그램과의 상호 운용성이 제한되거나/없어지는 경고 벨입니다.

예 URI를 :

net.tcp://localhost:7272 
net.msmq://somemachine/publicQueue 
net.pipe://machine.domain.com/somePipe 

측면 해설 : MSMQ 및 명명 된 파이프가 명확하게 마이크로 소프트의 프로토콜에 따라서 상호 운용성의 부족 놀랍지, TCP 따라서 인터넷과의 기초 프로토콜입니다 있지만, 분명히 WCF에서의 사용은 .NET에 한정되어서는 안됩니다.

WCF의 상호 운용성은 이미 SOAP와 HTTP에 의해 처리됩니다. 둘 다 TCP 위에 실행됩니다. TCP를 통한 상호 운용성을 원하면 해당 프로토콜 중 하나를 사용하십시오.

따라서 Microsoft는 상호 운용성이 아닌 성능이 핵심 목표 인 통신 대안을 제공하려고했습니다. TCP는 논리적 인 선택 이었지만 TCP는 상대적으로 낮은 수준의 프로토콜이므로 WCF와 같은 메시징 프레임 워크에서 직접 작동하도록 추가 동작과 기본값을 구현해야합니다. 또한 TCP 액세스 리소스에 대해 일반적으로 허용되는 URI 체계가 없으므로 Microsoft는이를 개발해야했습니다. 따라서 net.tcp이 태어났습니다.


URI 자체는 반드시 사용할 바인딩을 정확하게 나타내는 것은 아니지만 힌트를 제공합니다. Simon Mourier의 답변에 따르면 현재 WCF에서 사용할 수있는 바인딩은 here입니다. 예를 들어 net.tcp 주소는 NetTcpBinding, NetPeerTcpBinding 또는 NetTcpContextBinding이 필요함을 나타낼 수 있습니다.

+4

http가 tcp의 최상위에서 실행될 때 우리는 단순히 "http"라고 부르고 tcp의 ftp는 단순히 "ftp"라고하며 tcp의 맨 위에있는 비트 토 런트는 "torrent"입니다 (다른 모든 인터넷 프로토콜에도 동일하게 적용됩니다). Microsoft "net.tcp"대신 "net.wcf"라는 이름을 지정해야합니다. – slebetman

+0

:-) 좋은 지적입니다. 그것은 물건을 조금 더 분명하게 만들었을지도 모른다. –

+0

그건 훨씬 좋은 답변입니다. net.tcp에 대한보다 깊은 기술 정보를 얻을 수있는 자료를 제공해 줄 수 있습니까? – csteinmueller

관련 문제