문제

외장 하드웨어와 대화하는 "서버"응용 프로그램을 작성하려고합니다. 신청서는 고객의 요청을 처리해야합니다. 클라이언트는 서버에 메시지를 보내고 서버가 하드웨어로 작업을 수행하는 데 바쁘면 새 메시지는 나중에 처리 될 대기열에 저장되어야합니다.

클라이언트는 또한 요청을 취소 할 수 있어야합니다 (서버 대기열에있는 경우). 서버 응용 프로그램이 하드웨어로 완료되면 결과를 작업을 요청한 클라이언트에게 다시 보낼 수 있습니다.

서버 및 클라이언트 응용 프로그램은 동일한 PC에 있거나 없을 수도 있습니다. 모든 개발은 .NET (C#) 2005에서 수행됩니다.

그래서 내 질문은 :이 커뮤니케이션 문제를 해결하는 가장 좋은 방법은 무엇입니까?

MSMQ? 비누? WCF? 리모 팅? 다른?

도움이 되었습니까?

해결책

원격

.NET 2005에서 모든 개발이 이루어지면 원격이 가장 좋은 방법입니다.http://en.wikipedia.org/wiki/.net_remoting

다른 팁

.NET 3.0 이상을 사용할 수 있다고 가정하면 통신 채널로 WCF를 원할 것입니다. 인터페이스는 일관되지만 클라이언트와 서버가 서로 관련이있는 위치에 따라 적절한 전송 메커니즘을 사용할 수 있습니다. SOAP 또는 MSMQ 또는 이진 형식 또는 다른 사람을 적절하게 사용하도록 선택할 수 있습니다 (필요한 경우 직접 굴릴 수 있음). 또한 양방향 커뮤니케이션의 필요성도 다룹니다.

서버에서 메시지를 대기하는 것은 아마도 대기하는 메시지를 제거해야 할 필요성을 감안할 때 별도의 문제로 간주되어야합니다.

클라이언트와 서버 프로세스가 동일한 컴퓨터에 있으면 이름이 지정된 파이프가 가장 빠른 원시 전송 속도를 제공 할 것입니다. 프로세스가 다른 기계에 걸쳐있는 경우 소켓 기반 접근 방식을 사용해야합니다.

리모 팅은 매우 느립니다. 솔루션을 배포하려는 대상 OS를 기반으로 wcf et.all과 같은 옵션을 가질 수 있지만 이러한 프로토콜의 오버 헤드는 결정하는 동안보고 싶은 것입니다.

MSMQ는 보안 및 배포 고려 사항이 있지만 의미가 있습니다. 서비스 버스 (예 : S NServiceBus 또는 MassTransit)를 볼 수 있으며 SQL Server Service Broker도 도움이 될 수 있으며 서비스 버스에서 전송으로 사용할 수 있음)도 있습니다.

WCF는 또 다른 일이지만 실제로 네트워크 전송 전송이므로 WCF 호출이 서버 큐에 메시지를 넣기를 원할 것입니다.

문제의 분리를 유지하기가 어렵 기 때문에 원격을 권장하지 않으며, 알기 전에 실현하지 않고 정말 수다스러운 인터페이스를 개발하고 있습니다. 원격 통화는 상대적인 용어로 비싸기 때문에 메시지를 상당히 거친 입자로 유지하려고 노력해야합니다. WCF는 내 추천이 될 것입니다. 적어도 HTTP 전송을 사용하도록 설정하고 많은 배치 및 보안 두통을 피할 수 있기 때문입니다.

.NET 프레임 워크는 각각의 특정 수준의 전문 지식과 유연성을 염두에두고 설계된 다른 응용 프로그램 도메인의 객체와 통신하는 몇 가지 방법을 제공합니다. 예를 들어, 인터넷의 성장으로 XML 웹 서비스는 XML 웹 서비스가 XML을 사용하는 HTTP 프로토콜 및 SOAP 형식의 공통 인프라를 기반으로 구축되기 때문에 XML 웹 서비스를 매력적인 커뮤니케이션 방법으로 만들었습니다. 이들은 공개 표준이며 추가 프록시 또는 방화벽 문제에 대해 걱정하지 않고 현재 웹 인프라와 즉시 사용할 수 있습니다.

그러나 HTTP 연결을 통해 SOAP 직렬화와 관련된 성능 문제로 인해 일부 형태의 XML 웹 서비스를 사용하여 모든 응용 프로그램을 구축 해야하는 것은 아닙니다.

.NET에서 통신 옵션 선택 응용 프로그램에 원하는 형태의 객관적인 커뮤니케이션을 결정하는 데 도움이됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top