2009-06-21 3 views
3

빠른 명령/응답 상호 작용을위한 프로토콜을 설정해야합니다. 내 본능은 SMTP 나 POP3가 작동하는 방식과 같은 CRLF로 구분 된 ASCII 문자열을 사용하여 간단한 프로토콜을 노크하고 보안이 필요한 경우 SSH/SSL을 통해 터널링한다고 알려줍니다.빠른 명령/응답 상호 작용을 위해 어떤 프로토콜을 사용해야합니까?

나는이 작업을 수행 할 수 있지만, OS가 제공하는 소켓 라이브러리 인터페이스보다는 사람들이 친숙한 라이브러리를 사용할 수 있도록 기존 기술을 기반으로 개발하는 것을 선호합니다.

내가 필요 ...

  • 명령 앞뒤로 구조화 된 데이터를 전달하는 응답. (XML, S 식은 상관하지 않습니다.)
  • 서버가 폴링되지 않고 클라이언트에 예약되지 않은 알림을 보내는 기능입니다.

어떤 아이디어로주세요?

+0

답변 해 주셔서 감사합니다. 나는 사람들이 답변의 목록처럼이 질문을 검색하기를 바랍니다. – billpg

답변

1

AMQP는 유망한 것으로 들립니다. 또는 XMPP는 많은 오버 헤드로도 원하는 것을 많이 지원한다고 생각합니다.

즉, 수행하려는 작업에 따라 간단한 애드혹 프로토콜이 더 쉬울 수도 있습니다.

+0

다양한 제안이 내 응용 프로그램에 실제로 적합하지 않기 때문에 "임시 프로토콜"을 사용하기 때문에이 대답을 수락합니다. – billpg

1

SNMP와 어떨까요? 앱에서 사용하는 모델과 정확히 일치하는지 모르겠지만 비동기 알림 및 풀 (즉, 트랩 및 가져 오기)을 모두 지원합니다.

2

요청/응답을 원할 경우 HTTP는 매우 간단합니다. 이미 요청/응답 프로토콜입니다. 클라이언트와 서버 측은 대부분의 언어로 널리 구현됩니다. 스케일링을 잘 이해하고 있습니다.

가장 쉬운 방법은 서버에 POST 요청으로 명령을 보내고 서버가 응답 본문에 응답을 되돌려 보내는 것입니다. 자신의 동사로 HTTP를 확장 할 수도 있지만 HTTP를 이해하는 프록시 및 기타 인프라 캐싱을 활용하는 것이 더 효과적입니다.

비동기 알림을 원한다면 Pub/Sub 프로토콜 (Spread, XMPP, AMQP, JMS 구현 또는 TibcoRV, Tibco EMS 또는 Websphere MQ와 같은 상용 Pub/Sub 메시지 브로커)를 살펴보십시오. 선택할 프로토콜 또는 구현은 구축중인 시스템의 안정성, 대기 시간 및 처리량 요구 사항에 따라 다릅니다. 예를 들어 네트워크가 혼잡 할 때 알림을 삭제해도 괜찮습니까? 클라이언트가 오프라인 상태 일 때 알림은 어떻게됩니까? 클라이언트가 다시 연결될 때 폐기되거나 대기 상태가됩니다.

0

고려해야 할 변수가 많아서 좋은 질문입니다. 패킷 형식, 비동기 대 동기화 메시징 및 보안과 같은 몇 가지 문제 만 언급했습니다. 많은 사람들이 생각할 수있는 많은 것들이 있습니다. 필자는 7 계층 프로토콜 스택 (OSI/ISO)에 대한 설명을 통해 자신이 원하는 레이어에 무엇이 필요한지 물어보고, 해당 레이어를 만들거나 다른 곳에서 가져오고 싶은지를 묻는 것이 좋습니다. (대부분 레이어 6과 레이어 7에 관심이있는 것 같지만 하위 레이어에 대해서도 언급 한 것처럼 보입니다.)

이것이 안전성이 중요한 애플리케이션인지 또는 공식적인 시스템이 V & V인지 확인하십시오. 신뢰할 수있는 통신 시스템은 설계하기가 쉽지 않습니다. 또한 "부족한"프로토콜은 오류 복구를 위해 애플리케이션에 많은 코딩 부담을 줄 수 있습니다.

마지막으로, 내가 좋아하는 다른 응용 프로그램이 어떻게 작업하는지 확인하는 것이 좋습니다 (오픈 소스를 확인하고 책을 읽는 등).특허청 데이터베이스 등 하나는 해결하려고하는 통신 문제에 대한 설명을 읽는 것만으로도 훌륭한 아이디어를 얻을 수 있습니다.

관련 문제