2012-10-24 3 views
2

분산 시스템을 구축 중입니다. 몇 가지 응용 프로그램이 있습니다 (일부는 .Net 기반 (C#), 다른 C++ 기반 (NOT C++/CLI!)). 이러한 앱은 클러스터에있는 각 컴퓨터에 설치됩니다 (현재 Windows 기반). 로컬 PC에서 C# 응용 프로그램의 경우 IPM : MemoryMappedFiles, C++ 응용 프로그램의 경우 공유 메모리, C# 및 C++ 간의 IPC는 Named Pipes를 사용합니다. 인터넷을 통해 WCF TCP 바인딩을 사용합니다. C# 응용 프로그램을 C++ 응용 프로그램 용 브리지로 사용합니다.WCF TCP 바인딩 또는 그리드 컴퓨팅을위한 명명 된 파이프?

LAN 통신에는 어떤 것이 더 좋을까요? MPICH2는 TCP를 사용하는 것 같습니다 ... 일반적인 명명 된 파이프는 WCF TCP 바인딩 (보안 해제 등)과 비교하여 더 빠릅니까? 메시지는 대개 두 배 유형으로 매우 클 수 있습니다. WCF는 제 상황에서 매우 편리합니다 (모든 수학적 방법은 단순한 계약입니다). 그러나 성능은 문제입니다.

답변

0

두 개의 다른 레이어를 혼합하면 WCF over NamedPipes도 실행할 수 있습니다. 명명 된 파이프 (많은 설정 단어로 작업 할 수 있지만)는 두 컴퓨터에서 두 프로세스간에 통신하도록 설계되지 않았습니다.

언제이 전송을 사용해야하는지 이해하는 데 도움이되는 Choosing a Transport의 MSDN 페이지를 참조하십시오. 각 운송

이 절은 그 (것)들의 사이에서 선택 에 대한 상세한 결정 차트를 포함하여 세 가지 주요 전송 중 하나를 선택하는 주요 이유를 설명의

장점.

HTTP 전송

HTTP 사용하는

는 클라이언트와 서버 사이의 요청/응답 프로토콜입니다. 가장 일반적인 응용 프로그램은 웹 서버와 통신하는 웹 브라우저 클라이언트로 구성됩니다. 클라이언트는 서버에 클라이언트 요청 메시지를 수신하는 요청을 보냅니다. 서버가 요청을 받으면 요청 상태를 포함하는 응답을 반환합니다. 성공한 경우 웹 페이지, 오류 메시지 또는 기타 정보와 같은 선택적 데이터가 반환됩니다. HTTP 프로토콜에 대한 자세한 내용은 HTTP - HTTP (Hypertext Transfer Protocol)를 참조하십시오.

HTTP 프로토콜은 연결 기반이 아닙니다. 일단 응답을 보내면 상태가 유지되지 않습니다. 여러 페이지 트랜잭션을 처리하려면 응용 프로그램이 필요한 모든 상태를 유지해야합니다.

WCF에서 HTTP 전송 바인딩은 WCF 레거시 시스템과의 상호 운용성 에 맞게 최적화되어 있습니다. 통신하는 모든 당사자가 WCF를 사용하는 경우 TCP 기반 또는 명명 된 파이프 기반 바인딩이 더 빠릅니다. 에 대한 자세한 내용은 NetTcpBinding 및 NetNamedPipeBinding을 참조하십시오.

TCP는 엔드 투 엔드 에러 검출 및 보정과 접속 기반 스트림 지향 전송 서비스 인 TCP 전송을 사용하는

. 연결 기반이란 데이터를 교환하기 전에 호스트 간의 통신 세션이 설정되었음을 의미합니다. 호스트는 논리적 인 IP 주소로 식별되는 TCP/IP 네트워크의 모든 장치입니다.

TCP는 안정적인 데이터 전달과 사용의 용이성을 제공합니다. 특히 TCP 은 보낸 사람에게 패킷 배달을 알리고 패킷을 보낸 순서와 동일한 순서로 전달되는 패킷을 보장하고 패킷을 다시 전송하며 데이터 패킷이 복제되지 않도록합니다. 이 안정적인 전달은 두 개의 TCP/IP 노드간에 적용되며 끝점 사이에 적용되는 WS-ReliableMessaging과 동일한이 아니며 포함 할 수있는 중간 노드 수와 관계 없습니다.

WCF TCP 전송은 양쪽 끝이 인 통신이 WCF를 사용하는 시나리오에 맞게 최적화되어 있습니다. 이 바인딩은 다른 컴퓨터 간의 통신을 포함하는 시나리오에서 가장 빠른 WCF 바인딩입니다. 메시지 교환은 메시지 전송을 최적화하기 위해 BinaryMessageEncodingBindingElement를 사용합니다. TCP는 이중 통신을 제공하므로 클라이언트가 네트워크 주소 translation (NAT) 뒤에 있더라도 양방향 계약을 구현하는 데 사용할 수 있습니다.

언제 명명 된 파이프 전송

명명 된 파이프는 프로세스가 통신에 사용할 수있는 공유 메모리의 한 부분으로 Windows 운영 체제의 커널 오브젝트와 같은 이다를 사용한다. 명명 된 파이프는 이름을 가지며 단일 시스템에서 프로세스 간의 양방향 통신 또는 단방향으로 사용할 수 있습니다.

단일 컴퓨터에서 다른 WCF 응용 프로그램간에 통신이 필요하고 다른 컴퓨터에서 다른 컴퓨터와의 통신을 막으려는 경우 명명 된 파이프 전송을 사용하십시오. 추가 제한은 상승 된 권한이 없으면 Windows 원격 데스크톱에서 실행중인 프로세스가 이 동일한 Windows 원격 데스크톱 세션으로 제한 될 수 있습니다.