2011-03-09 2 views
1

저는 C#과 WCF를 사용하여 일종의 채팅 응용 프로그램을 만들기를 고대하고 있습니다.하지만 시작하기 전에 몇 가지 사항을 정리하고 싶었 기 때문에 잘못된 방향으로 옮겨 가지 않았습니다. :)C#, WCF, 채팅 응용 프로그램을 만들고 싶습니다. 어떤 바인딩을 사용해야합니까? 어쩌면 몇 가지 예가 있을까요?

  • 응용 프로그램이 한 번에 내가 제대로 이해하면 응용 프로그램이 클라이언트와 서버 모두해야 그 때문에, 두 이벤트 (메시지를 보낼 수)하고 (메시지 수신) 이벤트를 수신 할 수 있어야한다 ?

  • 어떤 바인딩을 사용해야합니까? 내가 이해한다면, basicHttp 바인딩은 설정이 어렵고, WCF 앱이 비 -WCF 앱에 연결해야 할 때 사용됩니까? 두 WCF 응용 프로그램을 연결하는 동안 NetTcpBinding을 사용하는 것이 더 좋습니다.

  • 다른 응용 프로그램에서 실행중인 응용 프로그램을 어떻게 비교하여 찾을 수 있습니까? 앱이 먼저 연결될 중앙 서버가 있어야한다. "나는 user123이고 내 IP는 그 것이다. 나는 채팅 할 수있다."라고 말하면서 다른 사용자의 IP 주소를 찾는다. 아니면 중앙 서버없이 앱을 찾을 수있는 다른 방법이 있습니까?

  • 혹시이 주제에 대한 예제 또는 튜토리얼을 안내해 줄 수 있습니까? (인터넷 검색 시도, 운 없음).

고마워요! :)

답변

3

동료 (클라이언트로 작동 할 수있는 컴퓨터 & 서버)가 NAT/방화벽 뒤에있을 경우 WCF를 사용하여 채팅 응용 프로그램을 구축하는 데 매우 어려움이 있습니다. 동료가 모두 동일한 네트워크에있는 경우 WCF를 사용할 수 있습니다.

WCF를 사용하여 채팅 응용 프로그램을 처음부터 작성하려면 휠을 다시 발명해야합니다. XMPP와 같은 목적으로 정확하게 설계된 기존 프로토콜을 사용하지 않는 이유는 무엇입니까? .Net 주변에는 XMPP libraries 명이 있습니다. 중앙 서버가 필요하지만 XMPP를 사용하는 경우 기존의 많은 무료 서버 중 하나에 피기 백 (piggyback) 할 수 있습니다.

+0

감사합니다. XMPP를 살펴 봅니다. :) – Roger

0

는 질문에 옳고 그른 답이 없다 - 그것은 모두 당신이 필요에 따라 달라집니다. 그런 다음 요구 사항에 맞는 최상의 아키텍처를 선택한 다음 해당 아키텍처에 가장 적합한 기술을 선택할 수 있습니다.

고려해야 할 두 가지 사항 - 사용자가 채팅 할 사람을 어떻게 찾은 다음 다른 사람을 찾았는지 - 응용 프로그램이 서로 어떻게 연결되는지를 고려해야합니다.

사용자가 서로를 찾으려면 중앙 서버에 연결해야합니다. 중앙 서버에 연결되어 있으면 연결된 모든 사용자의 목록이 표시되거나 사용자가 채팅하려는 사람의 IP 주소를 입력해야합니다. 이 두 번째 경우에는 일부 방화벽이 들어오는 연결을 차단하므로 어떤 경우에는 그렇지 않을 수도 있습니다.

다음으로 채팅하려는 사람을 찾으면 메시지가 다른 사용자에게 직접 라우팅 될지 또는 중앙 서버를 계속 통과 할지를 결정해야합니다.

중앙 서버를 선택하면 응용 프로그램이 클라이언트로 작동하므로 문제없이 방화벽을 통과하게됩니다. 그러나 다른 사용자에게 직접 연결하면 응용 프로그램의 두 복사본이 모두 클라이언트와 서버 (P2P 토폴로지)로 작동하므로 방화벽이 문제가 될 수 있습니다. 즉, 응용 프로그램 중 하나를 서버로 지정하고 나머지는 클라이언트로 사용할 수 있습니다.이 경우 서버 측만 방화벽에 대해 걱정할 필요가 있습니다.

달성하고자하는 것을 정확히 알지 못하면 어느 아키텍처가 가장 잘 작동하는지 추천하기가 어렵습니다.

관련 문제