1. 분산 환경에서의 통신 방법
l 메시지 전달방식(message passing)
Socket
: 메시지를 전달하는 것이 하나의 프로세스
l 요청/응답방식(request/response)
HTTP, RPC, CORBA, DCOM, RMI
: 메시지를 전달(request)하고 결과(response)를 되돌려 받는 것이 하나의 프로세스
à 내부적인 함수 호출과 동일한 방식 가능
2. RPC(Remote Procedure Call)
한 프로그램이 네트워크상의 다른 컴퓨터에 위치하고 있는 프로그램에 서비스를 요청하는데 사용되는 프로토콜이다.
같은 프로그램내의 함수(Procedure)를 호출하는 것과 같이 원격 프로그램내의 함수를 호출해서 결과를 받는다.
요청하는 프로그램이 원격 절차의 처리 결과가 반환 될 때 까지 일시 정지되어야 하는 동기식 운영이다.
ORPC(Object RPC)는 객체지향 개념을 도입한 RPC로서 객체의 메소드를 호출하고 파라미터로 객체를 직접 전송한다.
3. XML-RPC
XML 기반의 분산 시스템 통신방법으로서 HTTP를 통하여 간단하고 이식성 높은 원격 프로시저 호출을 지원한다. 리모트 프로시저의 호출에 대하여 XML 형태로 매개변수나 리턴값을 인코딩한다.
l 구현 언어 중립 기술
à XML-RPC는 Perl, Java, C, C++, PHP와 그 외 다른 많은 언어로 사용할 수 있으며 Unix, Windows, 그리고 Macintosh에서 실행할 수 있다.
l XML-RPC의 통과 방식
4. 지원되는 데이터 유형
l XML-RPC이 지원하는 데이터형
int(i4) |
부호 있는 32비트 정수형 |
string |
NULL 바이트를 포함할 수 있는 아스키 문자열 (일부에서는 유니코드를 지원함) |
Boolean |
참 또는 거짓 |
double |
배정도 실수형 |
dataTime.iso8601 |
날짜와 시각. XML-RPC는 타임존의 사용을 금하기 때문에 거의 쓸모 없음 |
base64 |
임의의 길이를 가지는 저수준 이진 데이터 |
array |
1차원 배열. 배열 값은 어떠한 형도 가능함 |
struct |
key-value의 쌍으로 이루어진 구조체형 |
l XML-RPC 데이터 유형과 전달되는 유형
XML-RPC 데이터형 |
파서에 의해 생성되는 데이터형 |
핸들러에 정의된 유형 |
<i4> or <int> <Boolean> <string> <double> <dateTime.iso8601> <struct> <array> <base64> |
java.lang.Integer java.lang.Boolean java.lang.String java.lang.Double java.util.Date java.util.Hashtable java.util.Vector byte[ ] |
int bolean java.lang.String double java.util.Date java.util.Hashtable java.util.Vector byte[ ] |
5. XML-PRC 외의 다른 프로토콜
l SOAP
SOAP은 XML-PRC와 매우 유사하며 XML-PRC를 발전/표준화시킨 기술이다.
SOAP 역시 HTTP와 XML 문서를 통해 프로시저를 호출한다.
최초의 공개 릴리즈는 XML-RPC의 기본이 되고 있으며 네임스페이스와 긴 요소 이름을 사용할 수 있도록 하였다.
W3C Working group은 SOAP에 의해 여러 다양한 기능들이 추가되었다.
SOAP는 XML Schemas, enumerations, struct와 array의 혼합, 그리고 사용자 정의 데이터 유형등을 지원한다. 플랫폼에 따라 몇 가지 형태의 SOAP이 제시되었다.
XML-RPC와 유사하지만 더 많은 기능을 지원하는 프로토콜을 찾는다면 SOAP을 고려한다.
6. XML-RPC의 장점
HTTP를 이용하므로 Web 상의 모든 종류의 어플리케이션과 상호 동작이 가능하며 객체 기반의 통신을 가느하게 한다.
독자적인 HTTP 서버 클래스로도 사용 가능하다.
간단한 구조로 인해서 성능이 향상되며 구현이 간단하고 용이하다.
플랫폼 및 개발 언어에 독립적이며 상대적으로 개발 비용이 적게 든다.
인터넷표준(HTTP)를 사용함으로써 어떤 다른 기술보다 인터넷 적용성을 지원한다.
안정성 및 상호운용성(interoperability) 확보하고 있다.
7. XML-RPC 환경 구축
l Apache 사이트에서 XML-RPC 지원 API아 Xerces API를 다운로드
à http://xml.apache.org/
l SUN 사이트에서도 XML-RPC API를 다운로드
à http://java.sun.com/xml/jaxrpc/index.html
다운로드한 jar 파일을 Java 2 SDK가 설치된 디렉토리의 jre/lib/ext 디렉토리에 저장’
8. XML-RPC의 구현
l 매개변수의 전달
매개변수는 XML-PRC 에서 지정된 타입으로 변환되어야 한다.
기본형은 Wrapper 클래스의 객체로 전달된다.
Byte, Integer, Vector, Hashtable 등의 타입을 지원한다.
매개변수 리스트는 Vector로 넘어간다.
l 반환값
반환값은 항상 Object 타입으로 리턴된다.
반환값은 미리 약속된 타입으로 캐스팅하여 사용한다.
예제 소스 :
출처 : e-Campus 강좌 중에서...