2013-03-07 3 views
0

저는 프로젝트를 계획하는 초기 단계에 있습니다. 나는 내 자신의 프로토콜을 구현하는 것을 포함하지 않는 기존의/쉬운 방법을 알고 싶다.매우 긴 폴링/"역 RPC"가 필요한 RPC 구현

RPC의 개념을 알고 있습니다. 클라이언트가 호출 할 수있는 특정 절차를 제공하는 서버가 있습니다. 글쎄, 나는 많은 고객을 가지고 있지만 유감스럽게도 그들과 직접 연결할 수는 없다. (NAT/방화벽 문제는 주로 가정용 PC이다.) 그래서, 나는 클라이언트가 직접 서버에 연결하여 "Poll for operation"메소드를 호출 할 것을 고려하고있었습니다. 나는 이것이 "역 RPC"라고 생각합니다. 즉,이 메소드가 수행하는 모든 작업은 서버가 수행해야 할 작업을 결정할 때까지 차단되며 (몇 초 또는 며칠이 소요될 수 있음) 수행해야 할 작업을 나타내는 데이터 조각을 반환하고 실제로 해당 코드를 호출합니다. 클라이언트로 전송하여 서버로 리턴하십시오. 3 단계를 참고하십시오.

  1. 클라이언트가 서버를 폴링합니다. 잠시 기다려주십시오.
  2. 서버가 일부 작업을 직렬화 된 형식으로 반환합니다. 예 : "나에게 파일을 보내"
  3. 클라이언트 그래서이

난 그냥 거기에 내가 때문에 HTTP와 HTTP를 넘어 사용하여이 일을 정말 있는지 이해할 수 없어요 작업을 실행하고 서버를 전송 요청과 응답. 나는 GET (1 단계와 2 단계)과 POST (3 단계)를 사용하여이 작업을 수행 할 수 있다고 생각하지만 서버 측에 많은 부기가 포함되어 있기 때문에 조금 더 우아하게하기를 바라고있다. 뭔가 등).

나는 이것을 수행하는 크로스 플랫폼 방식을 찾고 있습니다. 클라이언트는 C#에있을 것이지만 서버에 대한 내 생각을하지는 못했습니다. 이 작업이 HTTP를 통해 수행되는지 여부에 상관없이 "웹 서비스"가 적용될 수도 있고 적용되지 않을 수도 있습니다.

내 설명에 맞는 프로토콜/규칙에 대한 아이디어가 있습니까? 올바른 방향으로 나를 가리킬 수 있습니까?

답변

1

양방향 통신을 설정하고 NAT/방화벽/etc를 탐색 할 수있게하려면 WebSocket에 관심이있는 것 같습니다.