2017-10-25 14 views
0

구현 측면에서 RPC을 이해하는 데 어려움을 겪고 있습니다. RPC API를RPC : 메서드 호출과 API 호출

GET /readStudent?studentid=123 

예 :

예 : 나는 RPC에 읽은 몇 가지 기사, 나는 RPC 관련 예제를 다음 보았다 RPC 호출

POST /student HTTP/1.1 
HOST: api.demo.com 
Content-Type: application/json 

{"name": "John Doe"} 

지금까지 읽고 이해 한대로 RPC를 사용하면 클라이언트 응용 프로그램에서 다른 컴퓨터의 서버 응용 프로그램에서 메서드를 직접 호출 할 수 있습니다. 그것이 로컬 객체 인 경우.

위의 예는 무엇에 관한 것입니까? 메소드를 호출하는 대신 API 호출을하는 이유는 무엇입니까?

위의 RPC 예제에서 URL이 공용 메서드를 가리키고 메서드 인수가 쿼리 문자열이나 본문에 전달된다고 가정합니다.

그런 경우라면 REST를 사용하면 안되는 이유는 무엇입니까? 왜 HTTP api를 통해 공용 메소드 (실제 구현이 RPC 원칙에 따라 다른 곳에 있어야 함)를 공개하려는 노력을합니까?

나는 또한 실제 RPC 방법과 어떤 방법으로 선호해야하는지 혼란 스럽다.

답변

0

예제는 RPC 구현이 요청을 고유 프로세스로 전송하는 방법을 나타낼 수 있습니다. 그러나 클라이언트가 단순히 readStudent(123)createStudent("John Doe")과 같은 메소드/함수/프로 시저를 호출 할 수있게하는 변환 계층이 있어야합니다. 응용 프로그램 코드가 JSON/HTTP 또는 기타 전송의 세부 사항이 아닌 해당 메소드/함수/프로 시저 만 구현할 수 있도록하는 해당 서버 측 계층이 종종 있습니다. 이러한 번역 (또는 "마샬링") 계층은 종종 응용 프로그램 특정 인터페이스 사양에서 기계로 생성되어 번역 상용구의 지루한 수동 코딩을 방지합니다. 이러한 인터페이스 사양은 인터페이스 정의 언어 (IDL)로 작성됩니다.

REST은 메소드 호출이 존중하지 않을 수있는 몇 가지 일반적인 의미를 부과합니다. 그리고 이 필요하지 않습니다.은 응용 프로그램 별 메서드 호출과 같은 환상적인 번역 레이어를 제공합니다.