분산객체통신
Distributed object communication분산 컴퓨팅 환경에서 분산 객체 통신은 분산 객체 간의 통신을 실현합니다.주요 역할은 개체가 데이터에 액세스하고 원격 개체(비로컬 메모리 공간에 있는 개체)에서 메서드를 호출할 수 있도록 하는 것입니다.원격 개체에서 메서드를 호출하는 것을 RMI(Remote Method Invocation) 또는 원격 호출이라고 하며 원격 프로시저 호출(RPC)의 개체 지향 프로그래밍 아날로그입니다.
클래스 스터브 및 스켈레톤
통신 채널을 구현하는 방법에 대해 널리 사용되는 접근법은 스터브와 스켈레톤을 사용하여 실현됩니다.이러한 객체는 선택한 통신 프로토콜에 따라 구조와 동작이 달라지는 생성된 객체이지만, 일반적으로 네트워크를 통해 신뢰할 수 있는 통신을 보장하는 추가 기능을 제공합니다.
RMI에서 스터브(클라이언트의 비트)는 프로그래머가 인터페이스로 정의합니다.rmic(rmi 컴파일러)은 이를 사용하여 클래스 스터브를 만듭니다.스터브는 유형 검사를 수행합니다.스켈레톤은 인터페이스 스텁을 구현하는 클래스에 정의됩니다.[1]
호출자가 호출된 개체에 대해 원격 호출을 수행하려는 경우 원격 스켈레톤과의 통신을 시작하는 스텁(stub)에 요청을 위임합니다.따라서 스터브는 호출자 인수를 네트워크를 통해 서버 스켈레톤으로 전달합니다.그런 다음 스켈레톤은 수신된 데이터를 호출된 개체로 전달하고 응답을 기다린 후 결과를 클라이언트 스텁으로 반환합니다.호출자와 호출된 개체 사이에는 직접적인 통신이 없습니다.
더 자세한 내용은 커뮤니케이션은 다음과 같은 몇 가지 단계로 구성됩니다.
- 호출자가 스터브에 의해 구현된 로컬 프로시저를 호출합니다.
- stub marshalls 호출 유형 및 요청 메시지의 입력 인수
- client stub은 네트워크를 통해 메시지를 서버로 전송하고 현재 실행 스레드를 차단합니다.
- 서버 스켈레톤은 네트워크로부터 요청 메시지를 수신합니다.
- 스켈레톤은 요청 메시지에서 호출 유형을 압축 해제하고 호출된 개체에서 프로시저를 찾습니다.
- skeleton unmarshalls procedure 인수
- skeleton은 호출된 개체에 대해 프로시저를 실행합니다.
- 호출된 개체는 계산을 수행하고 결과를 반환합니다.
- skeleton은 출력 인수를 응답 메시지로 포장합니다.
- 스켈레톤은 네트워크를 통해 다시 클라이언트에게 메시지를 보냅니다.
- 클라이언트 스터브는 네트워크로부터 응답 메시지를 수신합니다.
- stub unpacks 메시지의 출력 인수
- stub은 출력 인수를 호출자에게 전달하고 실행 스레드를 해제한 다음 호출자가 실행을 계속합니다.
이 아키텍처의 장점은 호출자나 호출된 개체 모두 네트워크 관련 로직을 구현할 필요가 없다는 것입니다.네트워크를 통해 신뢰할 수 있는 통신 채널을 보장하는 이 기능은 스터브 및 스켈레톤 계층으로 이동되었습니다.
스텁
분산 개체 통신에 참여하는 클라이언트 측 개체는 스텁(stub) 또는 프록시(proxy)로 알려져 있으며,
스터브는 클라이언트 측 개체와 이를 통해 라우팅되는 서버 측 개체에 대한 모든 발신 요청에 대한 게이트웨이 역할을 합니다.스터브는 클라이언트 개체 기능을 랩핑하고 네트워크 로직을 추가하여 클라이언트와 서버 간의 신뢰할 수 있는 통신 채널을 보장합니다.스터브는 선택한 통신 프로토콜에 따라 수동으로 작성되거나 자동으로 생성될 수 있습니다.
스터브는 다음을 담당합니다.
- 서버 스켈레톤을 향해 통신 시작
- 호출자 개체로부터의 호출 변환
- 매개 변수의 마샬링
- 스켈레톤에게 호출이 실행되어야 함을 알리기
- 네트워크를 통해 뼈대에 인수 전달
- 뼈대에서 나오는 반응을 무시하지 않는 것
- 통화가 완료되었음을 발신자에게 알리기
스켈레톤
분산 개체 통신에 참여하는 서버 측 개체를 스켈레톤(또는 stub; 여기서는 피함)이라고 합니다.
스켈레톤은 서버측 개체의 게이트웨이 역할을 하며 모든 들어오는 클라이언트 요청은 스켈레톤을 통해 라우팅됩니다.스켈레톤은 서버 개체 기능을 랩핑하여 클라이언트에 노출하며, 네트워크 로직을 추가하여 클라이언트와 서버 간의 신뢰할 수 있는 통신 채널을 보장합니다.선택한 통신 프로토콜에 따라 골격을 수동으로 작성하거나 자동으로 생성할 수 있습니다.
골격은 다음과 같은 역할을 합니다.
- 수신 데이터를 스텁에서 올바른 업 calls에서 서버 개체로 변환
- 수신한 데이터에서 인수를 제거합니다.
- 서버 개체에 인수 전달
- 서버 개체에서 반환된 값의 마샬링
- 네트워크를 통해 클라이언트 스터브에 값 전달
스터브/스켈레톤 접근방식을 이용한 프로토콜
- IMT2000 3GPP - 휴대용 분산 객체 - 목적-C
- CORBA(Common Object Request Broker Architecture) – 언어 간
- Java 원격 메서드 호출(Java RMI) – Java
- DCOM(Distributed Component Object Model) – Microsoft, 언어 간
- (첨자를 "proxy"라고 부르고 뼈대를 "stub"이라고 부른다는 것에 유의하십시오.)
- .NET 원격 – Microsoft, 언어 간
- DDObjects – Borland Delphi
- DRB(Distributed Ruby
참고 항목
참고문헌
- ^ "Introduction to Java Remote Method Invocation (RMI)". www-itec.uni-klu.ac.at. Archived from the original on 2002-03-26.
- ^ MSDN: 마시콜 세부 정보입니다.
- 플라실, 프란티셰크, 스탈, 미카엘"CORBA, Java RMI 및 COM/DCOM의 분산 객체 및 컴포넌트에 대한 아키텍처 뷰", Software Concepts & Tools (vol. 19, no. 1), 1998년 1월.
- 드루셸, 피터 "분산 프로그램 구축"
- 팔리, 짐.Java Distributed Computing, 오라일리, 1998년 1월
- 연구논문, 분산시스템연구단, 프라하 샤를대학