어플리케이션 프레임워크 레벨에서 통신은 방법의 차이는 있지만 기본적인 내용은 그리 어렵지 않다.
1. 연결방식에 관한 분류:
- 트랜잭션 후 연결이 끊어져야 하는가 혹은 다음 트랜잭션을 위해 계속 열려 있어야 하는가? (keep-alive)
- 데이터를 보내고 받는 연결이 하나인가 2개 혹은 그 이상으로 분리되어 있는가?(단일/멀티소켓)
- 연결이 2개 이상일 경우 요구/응답에 동일한 연결을 사용하는 트랜잭션 위주인가 혹은 요구와 응답이 완전히 분리된 async인가?
- 누가 서버역할을 할 것인가?
2. 데이터 전송에 관한 분류:
- 전송이 끝을 어떻게 표시할 것인가? (길이 방식/구분자 방식)
※ HTTP는 구분자(2개의 연속된 \r\n)와 Content-length 헤더 혹은 크기+데이터의 길이 방식을 모두 사용 - 데이터의 포맷을 미리 정의하고 값(value)만 보낼 것인가, 데이터에 라벨을 붙여 보낼 것인가? (고정형/가변형)
※ 고정형은 빈 값일 경우에도 해당 위치에 공백을 채워야 하므로 데이터 양이 일정하고 가변형은 필요한 부분만 발췌하여 전송함으로 통신자원을 절약할 수 있지만 데이터 분석에 추가적인 프로세싱이 필요
※ 가변형의 경우 '이름:내용[개행]' 방식 등을 사용할 수 있지만 최근에는 XML이 대세
프레임워크 단계에서는 이정도만 구현해도 될 듯.

