다음을 통해 공유


호출 간 서버에서 상태 유지 관리

별도의 RPC 호출 간에 서버의 상태를 유지해야 하는 경우가 많습니다. 컨텍스트 핸들을 사용하는 것이 가장 좋은 방법입니다. 컨텍스트 핸들이 내부적으로 작동하는 방식에 대한 몇 가지 단어는 컨텍스트 핸들이 가장 잘 작동하는 시기를 이해하는 데 도움이 됩니다.

클라이언트는 서버에 보관된 상태를 수신하지 않습니다. 대부분의 경우 서버의 상태는 메모리 블록에 대한 포인터이며 클라이언트에는 이에 대한 정보가 없습니다. 수신하는 모든 클라이언트는 서버가 클라이언트에 보내고 모든 후속 작업에서 컨텍스트 핸들을 나타내는 다른 정보와 함께 큰 고유 번호입니다. 클라이언트가 열린 핸들을 참조할 때마다 해당 컨텍스트 핸들이 열렸을 때 서버에서 받은 많은 수를 보냅니다.

서버는 클라이언트에 보내는 모든 큰 숫자를 추적합니다. 서버가 컨텍스트 핸들을 나타내는 큰 숫자를 받으면 해당 클라이언트에 대한 유효하고 미해결 컨텍스트 핸들 컬렉션의 숫자를 조회하고 지정된 큰 수에 해당하는 서버 쪽 컨텍스트를 찾습니다. 서버 루틴에 전달됩니다. 큰 숫자를 찾을 수 없으면 RPC_X_SS_CONTEXT_MISMATCH 예외가 발생하고 클라이언트에 전파됩니다.

이 디자인의 코드는 다음과 같습니다.

  • 컨텍스트 핸들은 기존 클라이언트/서버 세션의 컨텍스트에서만 유효합니다. 다른 클라이언트에 전달할 수 없습니다.
  • 서버가 다시 부팅되거나 클라이언트에 대한 연결이 끊어지면 컨텍스트 핸들이 유효하지 않습니다.
  • 클라이언트는 컨텍스트 핸들이 서버에서 나타내는 것을 해석할 수 없습니다. 클라이언트에 대한 모든 컨텍스트 핸들은 단순히 큰 숫자입니다.

클라이언트가 실패하면 서버는 알림을 받고 런다운 메커니즘을 사용하여 컨텍스트 핸들을 클린.