2011-09-21 4 views
0

나는 고도의 객체 지향 솔루션을 개발하고있다. (가능한 한 적은 결합, 많은 재사용 및 모듈 코드, 디자인 패턴의 좋은 사용, 깨끗한 코드 등). 나는 현재 응용 프로그램의 클라이언트 - 서버 측면을 구현 중이며 새로운 내용입니다. 소켓을 사용하는 방법과 스트림을 보내고받는 방법을 알고 있습니다. 그러나 실제로 솔루션을 설계하는 방법에 대해 확신 할 수 없습니다.자바 TCP 서버 - 클라이언트 디자인 솔루션

TCP Java 솔루션에 대한 패턴 (있는 경우)은 무엇입니까? 네트워크를 통해 직렬화 된 객체를 많이 보냅니다. 다른 요청/객체를 처리하려면 어떻게해야합니까? 사실 요청 자체를 어떻게 처리합니까? 다른 객체 내부로 전송하는 각 객체를 래핑합니까? 객체가 도착하면 '명령/요청'을 위해이를 구문 분석 한 다음 이에 따라 객체를 처리합니다. 내가 고민하는 것은이 일반적인 디자인이다.

모든 온라인 자습서는 클라이언트가 보낸 텍스트를 보내는 늪지대 표준 서버로 보입니다. 실제 소켓에 대해 학습 할 때만 유용하지만 실제 상황에 적용 할 때는 유용하지 않습니다. 많은 사례 진술과 if 진술은 열악한 개발로 보인다. 어떤 아이디어? 이 단계에서는 프레임 워크를 사용하지 않을 것입니다.

건배,

팀.

답변

3

더 높은 수준의 프로토콜을 사용하고 TCP/IP를 사용한다고 생각해보십시오. 휠을 재발 명하지 마십시오. rmi은 좋은 옵션이며 좋은 자습서를 찾을 수 있어야합니다.

+5

+1 : 휠을 다시 발명하려는 경우, 더 나은 휠과 충분한 노력을 기울여야합니다. –

1

여러분이 RMI를 사용하거나 세부 사항을 보아서 어떻게 다른 방식으로 작업을 수행 할 것인지 결정할 수 있습니다. 최소한 RMI를 사용하여 직접 해보기 전에 어떻게 작동하는지 볼 것을 제안합니다.

0

고성능 및 낮은 대기 시간이 주요 요구 사항이 아닌 경우 기존 솔루션을 사용하십시오. 그리고 EJB로 J2EE를 사용하는 것보다 rmi를 사용하기로 결정한 경우 rmi 위에 트랜잭션 관리 기능을 제공합니다.

그렇지 않으면 매우 짧은 대기 시간이 필요한 경우 tcp 위에 맞춤 프로토콜을 사용하는 기존 솔루션의 출처를 살펴보십시오. 예를 들어 OpenChord는 직렬화 된 요청 및 응답 객체를 보내고 Voldemort 프로젝트는 몇 가지 작업에 대해 사용자 정의 메시지를 사용합니다.

관련 문제