2010-07-30 4 views
0

우선 Should I use WCF or raw sockets?에 대한 후속 질문입니다. 응답 한 모두 덕분에, 그것은 저에게 많은 도움이되었습니다!.NET 상호 운용성 문제

요즘에는 몇 가지 요구 사항이 변경되었습니다. 장애물은 이제 Windows 이외에 Linux 클라이언트를 지원해야한다는 장애물입니다. .NET을 서버 측에서 요구 사항으로 사용해야합니다. 또한 클라이언트 (또는 설문 조사)와의 지속적인 연결을 유지해야합니다. 다음 옵션을 사용하여 커뮤니티의 의견을 요청하고 싶습니다.

  1. 더 간단한 버전의 게시자 - 하위 모델을 사용하십시오. 나는 클라이언트에서 끊임없이 폴링하는 서버에서 웹 서비스를 가지고있다. (나는 클라이언트에서 실행하고 서비스를 통해 서버로부터 명령을 내 보내야하는 스크립트/바이너리를 미리 패키징한다.) 서버는 클라이언트의 작업을 대기열에 넣고 클라이언트가 그 작업을 선택합니다. 이 모델은 어느 플랫폼에서든 클라이언트를 작성할 수 있으므로 상호 운용 성이 높습니다. 또한 http 때문에 클라이언트 측의 방화벽에 대해 걱정할 필요가 없습니다. 그러나 나는 폴링에 대해 우려하고있다 (나는 1000 초의 클라이언트에 대해 매 몇 초마다 폴링해야 할 수도있다). 나는 Comet에 대해 읽었지만 불행히도, C#에서 구현하기 위해 많은 노력이 필요하다고 생각한다.

  2. 일반 소켓을 사용하고 클라이언트로부터의 영구 연결을 생성하고 해당 파이프를 사용하십시오. 여기서는 지속적인 연결에 대해 우려하고 있습니다. 클라이언트를 제어해야하며 NAT 뒤에 있습니다. 일반적으로, 사람들이 각 연결마다 스레드를 생성하는 것을 보았습니다. 확장 성이 없다고 생각합니다. 나 맞아? 비동기 호출/소켓이 더 좋은 방법을 선택합니까?

모든 의견을 크게 기뻐할 것입니다.

답변

0

표준 소켓을 사용하여 통신하면 다양한 OS간에 이식이 가능합니다. 일반 tcp 소켓은 매우 성숙한 기술입니다. 웹 서비스 (http)를 사용할 수도 있습니다. 소켓 상단에 앉아 있습니다. 웹 서비스는 인터넷을 가로 질러 갈 때 더 실용적입니다 (방화벽 문제 등).

+0

감사의 말씀 seand, 나는 일반 TCP 소켓으로 가기로 결정했습니다! – Andy