기본 RPC 응용 프로그램 개발 및 간단한 예제는 자습서 항목을 참조하십시오. 플랫폼 소프트웨어 개발 키트(SDK)에는 다음과 같이 다양한 RPC(원격 프로시저 호출) 개념을 보여 주는 예제가 포함되어 있습니다. RPC는 다른 컴퓨터에서 프로시저(함수)를 실행할 수 있다는 생각입니다. 실제로 프로시저는 동일한 컴퓨터에서 실행될 수 있지만 다른 컨텍스트(예: 서로 다른 사용 권한 및 수명 주기가 다른 사용자)에 있을 수 있습니다. 구조체를 마샬링하려면 직렬화해야 하는 필드를 결정합니다. 모든 데이터 항목을 보낼 필요는 없습니다(예: 일부 항목은 특정 RPC와 관련이 없거나 서버가 존재하는 다른 데이터 항목에서 다시 계산할 수 있음). 강력한 RPC 스텁 코드는 네트워크 오류 및 버전 관리를 지능적으로 처리해야 합니다. 예를 들어 서버는 여전히 스텁 코드의 초기 버전을 실행 중인 클라이언트의 요청을 처리해야 할 수 있습니다. 다음은 WebOb를 사용하여 웹 서비스를 작성하는 방법의 예입니다. 이 예제에서는 WebOb 및 simplejson JSON 라이브러리를 사용하여 JSON-RPC 끝점을 만드는 방법을 보여 주며 있습니다. 또한 WSGIProxy를 사용하여 WebOb를 클라이언트 라이브러리로 사용하는 방법도 보여 줄 수 있습니다. 이제 RPCClient.cs 및 RPCServer.cs 대한 전체 예제 소스 코드(기본 예외 처리 포함)를 살펴보겠습니다.

인터페이스 설명 언어의 현대적인 예는 구글의 프로토콜 버퍼 .proto 파일입니다. 이 예제에서는 JSON-RPC를 제시하지만 JSON-RPC를 보증하는 것은 아닙니다. 사실 나는 JSON-RPC를 좋아하지 않는다. 그것은 불필요 하 게 un-RESTful, 그리고 XML-RPC에 너무 밀접 하 게 모델링. 좋은 프로그래머는 테스트부터 시작합니다. 그러나 적어도 우리는 시험으로 끝날 것입니다. 우리는 우리의 테스트에 대 한 doctest를 사용 합니다. 테스트는 문서/json 예제 코드/test_jsonrpc.txt에 있으며 문서/json 예제 코드/test_jsonrpc.py로 실행할 수 있습니다. 실제로 원격 호출은 호출자보다 더 많거나 적은 권한으로 실행될 수 있습니다. 이는 원칙적으로 구성 요소가 최소 권한으로 작동하도록 하여 시스템의 보안을 향상시키는 데 사용할 수 있습니다.

안타깝게도 원치 않는 작업을 수행하기 위해 RPC 메커니즘을 전복할 수 없도록 보안 문제를 신중하게 평가해야 합니다. 예를 들어 RPC 구현은 연결된 클라이언트가 데이터의 하위 집합에 대한 작업의 하위 집합이 아니라 모든 작업을 수행하도록 암시적으로 신뢰할 수 있습니다. DYNEPT는 동적 끝점을 통해 서버에 대한 연결을 관리하는 클라이언트 응용 프로그램을 보여 줍니다. RPC 서비스를 사용할 수 있는 방법을 설명하기 위해 간단한 클라이언트 클래스를 만듭니다. RPC 요청을 보내고 응답을 받을 때까지 차단하는 Call이라는 메서드를 노출합니다: 손으로 스텁 코드를 작성하는 것은 고통스럽고 지루하며 오류가 발생하기 쉽고 유지 관리가 어렵고 구현된 코드에서 와이어 프로토콜을 리버스 엔지니어링하기가 어렵습니다. 더 나은 방법은 데이터 개체, 메시지 및 서비스를 지정하고 클라이언트 및 서버 코드를 자동으로 생성하는 것입니다. 클라이언트-서버 관계는 한 호출에만 적용된다는 것을 깨닫는 것이 중요합니다. 실제로 한 관점에서 서버인 프로그램은 다른 시설의 클라이언트일 수도 있습니다. 클라이언트는 해당 클라이언트가 서비스중인 클라이언트 내에서 루틴을 다시 호출할 수 있습니다. __import__(모듈)을 사용하여 모듈을 가져오지만 반환 값은 변덕스여 있습니다. sys.modules(로드된 모든 모듈의 사전)에서 가져온 것을 찾을 수 있습니다.

 

Comments are closed.

Set your Twitter account name in your settings to use the TwitterBar Section.