내 컴퓨터에서 실행중인 프로세스와 통신하려면 명명 된 파이프 또는 .NET Remoting을 사용해야합니까?
내 컴퓨터에서 실행중인 프로세스와 통신하려면 명명 된 파이프 또는 .NET Remoting을 사용해야합니까?
답변:
WCF가 최선의 선택입니다. 또한 지원 서로 다른 전송 메커니즘의 개수 ( 포함 명명 파이프 )와 완전히 구동 구성 될 수있다. WCF를 살펴 보는 것이 좋습니다.
다음은 WCF와 Remoting 성능 비교 를 수행하는 블로그입니다 .
블로그의 인용문 :
WCF와 .NET Remoting은 성능면에서 거의 비슷합니다. 차이가 너무 작아서 (클라이언트 대기 시간 측정) 어느 것이 더 빠른지는 중요하지 않습니다. WCF는 .NET Remoting보다 훨씬 더 나은 서버 처리량을 제공합니다. 완전히 새로운 프로젝트를 시작하려면 WCF를 선택했습니다. 어쨌든 WCF는 Remoting보다 훨씬 더 많은 기능을 수행하며 이러한 모든 기능을 좋아합니다.
단일 컴퓨터에있는 경우 명명 된 파이프는 더 나은 성능을 제공하며 원격 인프라 와 WCF로 구현할 수 있습니다 . 또는 System.IO.Pipes 직접 사용할 수 있습니다 .
프로세스 간 통신을 의미한다면 지금까지 아무런 문제없이 .NET Remoting을 사용했습니다. 두 프로세스가 동일한 시스템에 있으면 통신이 매우 빠릅니다.
명명 된 파이프는 확실히 더 효율적이지만 적어도 기본 응용 프로그램 프로토콜의 설계가 필요하며 이는 실행 가능하지 않을 수 있습니다. Remoting을 사용하면 원격 메서드를 쉽게 호출 할 수 있습니다.
.NET Framework 3.0 이상을 사용하는 경우 WCF를 사용합니다. WCF를 사용하면 성능 / 상호 운용성 등의 균형에 따라 다른 바인딩을 사용할 수 있습니다. 당신이 필요합니다.
성능이 중요하지 않고 다른 웹 서비스 기술과의 상호 운용이 필요한 경우 WS-HTTP 바인딩을 사용하는 것이 좋습니다. 귀하의 경우에는 net-tcp 바인딩 또는 명명 된 파이프 바인딩과 함께 WCF를 사용할 수 있습니다. 둘 중 하나가 작동합니다.
내 개인적인 견해는 계약 기반 서비스를 수행하고 개체가 아닌 메시지에 집중할 수 있기 때문에 WCF 접근 방식이 더 깨끗하다는 것입니다 (여기서는 WCF / .NET Remoting의 기본 프로그래밍 모델을 기반으로 일반화합니다). 많은 의미 정보가 손실되거나 명확하지 않기 때문에 와이어를 통해 객체를 보내는 것을 좋아하지 않습니다. WCF를 사용하는 것처럼 메시지를 보내는 것만으로도 통신과 단일 노드가 구성되는 클래스 / 인프라 간의 문제를 쉽게 분리 할 수 있습니다.
WCF는 또한 유연성을 제공합니다. 일부 구성 (바인딩) 만 변경하면 동일한 컴퓨터에서 IPC 대신 다른 컴퓨터에서 동일한 서비스를 사용할 수 있습니다. 따라서 코드는 유연하게 유지됩니다.
.net 원격은 내부 프로세스 통신을 수행하기 위해 .net에 내장되어 있습니다. 이를 사용하면 향후 버전에서 계속 지원하고 향상시킬 수 있습니다. 명명 된 파이프는 .net의 향후 버전에서 향상 될 것이라는 약속을주지 않습니다.