2011-11-15 2 views
3

저는이 분야를 좀 더 잘 이해하기 위해 간단한 서버/클라이언트 소프트웨어를 출시 할 것을 고대하고 있습니다.전이중 클라이언트/서버 소프트웨어를 구축 할 때 어디서부터 시작해야합니까?

제목에서 알 수 있듯이 전이중 클라이언트 및 서버 소프트웨어를 구축 할 때 무엇을 어디에서 시작해야합니까?

아마도 C#으로 빌드하려고합니다. 그렇지만 알고리즘과 간단한 구현에 더 관심이 많기 때문에 모든 언어에서 문제가 될 것입니다.

주로 TCP 작업을 목표로하고 있지만, 나중에 특정 데이터 형식으로 확장하려고 할 수도 있습니다.

미리 감사드립니다.

+2

TCP와 데이터 유형이 다른 것입니다. 가능한 한 느슨하게 의사 소통을 시도하십시오. TCP를 사용하여 구현할 수있는 추상 전송 계층을 정의합니다. 단, 디렉토리에도 파일을 삭제합니다. 컨텐츠의 경우 XML 또는 JSON으로 데이터를 직렬화 할 수 있습니다. 애플리케이션을 전송 방법과 프로토콜/데이터 형식 사용자 모두에 약간 의존하게 만드는 것은 Client/Server 및 N-Tier 프로그래밍의 더 큰 문제 중 하나입니다. – GolezTrol

+0

@GolezTrol, 저는 TCP와 데이터 유형이 다른 점을 알고 있습니다. 그 말은 일부 데이터 유형의 경우 좀 더 적합한 프로토콜을 찾겠다는 의미였습니다. – jolt

답변

3

나는 이런 물건을 직접 만들었고, 나는 socket.io이 전이중 서버 - 클라이언트 이벤트 중심의 통신을위한 훌륭한 프레임 워크라고 생각한다. 하지만 C#이 아니라 node.js입니다. 반면에 클라이언트와 동일한 언어로 브라우저 및 서버에 클라이언트를 작성할 수 있습니다. 또한 node.js는 "네트워킹의 권리"를 전문으로하므로 논 블로킹 IO와 같은 것을 배울 수 있습니다.

+0

"네트워킹의 권리"에 관한 부분입니다. 좋은 점은 따옴표로 표시 한 것입니다. 모두는 모든 일을 제대로하고있는 것 같습니다. 단, 그것만이 옳습니다. – jolt

+0

라이언 달 (Ryan Dahl)은 저명한 비디오 작가 중 한 사람의 말을 인용하여 저자입니다. 하지만이 경우에는 단일 스레드, 비 차단 I/O 및 많은 (전부는 아님) 고성능 네트워킹 응용 프로그램 (nginx)을 실제로 밀어 넣으려고하므로 실제로 진실은 아니지만 non-blocking io를 핵심 아이디어로 사용합니다. –

2

C#/NET을 사용하는 경우 WCF을 사용하는 것이 좋습니다.

이 파일을 웹 서버에서 호스팅하거나 자체 호스팅하고 독립 실행 형 응용 프로그램 내에서 호스팅 할 수 있습니다. 광산의 대부분은 표준 응용 프로그램을 통해 실행되었습니다.

전이중 서비스에 대한 자세한 내용은 here을 참조하십시오.

나는 두 페이지 모두에 많은 정보가 있음을 알고 있지만 상당히 광범위한 질문입니다. :)

2

시작은 WCF입니다.

  • 새 Windows 서비스를 만듭니다. 그것이 당신의 서버입니다.
  • winforms/wpf app/console 앱을 만듭니다. 너의 고객이야.
  • 서비스 내에서 일부 작업을 수행 할 메서드를 만듭니다.
  • 클라이언트에서 해당 메소드를 호출하고 일부 결과를 사용자에게 인쇄하십시오.
+0

크로스 플랫폼이 아니고 더 많은 크로스 운영 체제와 전용 플랫폼은 무엇입니까? – jolt

+0

@Tom : 확실하지 않습니다. C#을 고수하고 크로스 플랫폼을 제작하려면 [Mono] (http://en.wikipedia.org/wiki/Mono_%28software%29)를 살펴보십시오. "* 전용 *"OS는 무엇을 의미합니까? – Otiel

+0

전용 OS가 아니라 전용 서버를 의미합니다. – jolt

3

나는 이전 답변에서 WCF를 사용하는 것에 절대 동의합니다. 그러면이 상호 작용의 서버 측을 확실히 처리 할 수 ​​있습니다. 코드 프로젝트에는 클라이언트/서버 상호 작용에 대한 좋은 예가 많이 있습니다. A TCP/IP Server written in C#과 같은 것을 확인하십시오.

크로스 플랫폼에 대한 질문에 대답하기 위해 WCF를 사용하여 Java, .NET 및 Objective-C 클라이언트와 연결하고 상호 작용하므로 사용자가 안전하다고 생각합니다.

관련 문제