SOAP (Simple Object Access Protocol)

Download Report

Transcript SOAP (Simple Object Access Protocol)

Content









Introduction
XML Protocol
What is an RPC?
SOAP의 정의
SOAP의 장점
SOAP의 작동 원리
Envelope
Encoding rule
Web Service
1.Introduction

SOAP




Simple Object Access Protocol
XML 프로토콜 중 하나
SOAP은 한 컴퓨터에 있는 객체들을 호출
하여 이용할 수 있게 해주는 프로토콜
즉, 분산 컴퓨팅을 수행하는 수단을 말함.
What is the XML Protocol-(1)

목적


분산 환경에서의 에플리케이션간 데이터 교환
Component Model로써의 XML




기존 컴포넌트 기술의 상호운용성 문제
XML은 플랫폼 및 프로그래밍 언어에 독립적
DOM/SAX와 같은 표준 API를 통한 접근 방법을
제공하고, XML 스키마에 의해 Datatype 확장가능
HTTP protocol 사용에 따른 웹으로의 이식용이
What is the XML Protocol-(2)

XML Protocol의 기능




데이터 교환 시 Data Capsulation
RPC와 같은 외부 함수 호출의 지원
비 구조적 데이터에 대한 Serialization
HTTP 프로토콜을 그대로 이용
XML Protocol 메시지 구조
XML Protocol 메시지는 Header와
Body로 구성된 Envelope으로 구성
XML Protocol Body에 대한 추가적인
설명과 옵션을 정의하는 Meta Data
XML Protocol Processor가 XML Protocol
메시지를 처리할 때 작업의 논리적 단위(fault존재)
최종 XML Protocol 수신측에 전송될
Content를 포함
Envelope
XML Protocol Header
XML Protocol
XML Protocol
Block
XML Protocol
Block
XML Protocol
Body
XML Protocol
Block
XML Protocol
Block
XML Protocol의 종류

WDDX(Web Distributed Data eXchange)




프로그래밍 언어 사이에서의 복잡한 데이터 구조를 교환하
기 위해 고안됨
XML을 이용하여 데이터 직렬화를 통한 데이터 전달
직렬화 된 메세지는 데이터에 대한 타입정보와, 변수명, 변
수 값을 포함.
단점



데이터 직렬화에 대한 방법만이 정의되어 있다
RPC Call의 기능이 없다
XP Binding이 HTTP로 한정되어 있고 지원하는 데이터 타
입 또한 한정되어 있다
XML Protocol의 종류

XML-RPC







RPC기능을 XML로 구현
Remote Machine의 method 호출을 XML로 캡슐
화하여 전달하고 결과 역시 XML로 전달받음
기존 HTTP 프로토콜을 그대로 이용
HTTP POST방식을 기반으로 구현
XML을 이용함으로써 프로그래밍 언어에 독립적
방화벽에서 특정 프로토콜에 대한 거부를 피하면
서 분산 환경을 지원
자체 데이터 타입을 이용함에 따른 상호 운용성을
보장 할 수 없음
What is an RPC?-(1)



RPC(Remote Procedure Call)
한 컴퓨터에 있는 코드가 다른 컴퓨터에 있는
코드를 호출하는 것
필요사항



호출하고 싶은 코드가 들어있는 위치
해당 코드가 필요로 하는 파라미터들, 존재한다면
그 파라미터들의 형식
프로시저가 리턴하는 데이터, 존재한다면 그 데이
터들의 형식
What is an RPC?-(2)
RPC사용의 예

Web Server
Business Object
Business Object
Business Object
하나의 애플리케이션을 실행하기 위한 코
드가 여러 대의 컴퓨터에 흩어져 있는 분
산 시스템(distributed system)을 설계할
필요가 있는 경우 다음과 같이 서버들을
분리하여 각각의 서버들을 통신을 하게
할 필요가 있다.



Database
비즈니스 로직 객체를 위한 서버
프리젠테이션 로직 객체를 위한 서버
데이터베이스 서버
RPC Protocol

DCOM




IIOP



COM(Component Object Model)을 기반으로 한 분산
COM(Distribute COM)
COM 프로그래밍 모듈을 확장하여 에플리케이션이 원격 컴퓨터에
들어 있는 COM객체를 호출 할 수 있도록 해준다.
Microsoft에 의존적
Internet Inter-ORB Protocol
플랫폼에 중립적
Java RMI



Java Remote Method Invocation
Java가 제공하는 분산 컴퓨팅에 사용할 수 있는 시스템
어떤 플랫폼에서도 사용할 수 있다.
SOAP의 정의



Simple Object Access Protocal
스펙에서는 “분권 및 분산 환경에서 정보를
교환하는 가벼운 프로토콜”이라고 정의
한 컴퓨터에서 다른 컴퓨터로 정보를 전달할
때, 그 정보를 XML로 표현하는 표준적인 방법
을 제공
▶XML로 markup한 다음, 보통 HTTP로 전송되는 프
로토콜을 정의
SOAP의 장점



SOAP은 플랫폼, 언어, 벤더 중립적이다. SOAP은
XML과 (일반적으로) HTTP를 사용하여 구현되기 때
문에 특정 벤더에 의존적인 툴을 사용하지 않고도 어
떤 플랫폼, 어떤 언어로도 SOAP 요청을 쉽게 전송하
고 처리할 수 있다.
구현이 매우 쉽다. SOAP은 다른 프로토콜보다 훨씬
덜 복잡하게 설계되어 있다. SOAP서버는 Web
Server, ASP, CGI Script 중 어떤 것을 이용해서도 쉽
게 구현할 수 있다.
방화벽(Firewall)에서도 안전하다. 프로토콜로 HTTP
를 사용하고 있다고 가정하면 SOAP 메시지는 별도의
조작 과정을 거치지 않고도 방화벽을 넘어서 전달 될
수 있다.
SOAP의 작동원리-(1)

SOAP의 규정



RPC가 전송되는 방법에 대한 규칙. SOAP 스펙은
어떤 네트워크 프로토콜을 사용해도 상관없다 하
지만, 통상적으로 사용하는 HTTP에 맞는 특정한
규칙들이 포함된다.
전송되는 XML의 전체적인 구조. 이를 envelope라
고 부른다. SOAP을 통해 오고 가는 모든 정보들은
envelope안에 포함된다.
데이터가 XML로 어떻게 표현되어야 하는가에 대
한 규칙들. 이것을 encoding rule이라 한다.
SOAP의 작동원리-(2)

Network 전송


대부분 HTTP프로토콜을 사용한다.
SOAP에 HTTP를 사용하는 이유




HTTP는 이미 널리 구현되어 있으며, 이해하기 쉬운 프로토콜이다.
자체가 가지고 있는 요청/응답 패러다임이 RPC와 잘 들어맞는다.
이미 대부분의 방화벽이 HTTP에서 작업할 수 있도록 설정되어 있
다.
HTTP는 보안 소켓 레이어(Secure Socket Layer, SSL)를 이용하여
쉽게 보안을 구축할 수 있다.
Envelope-(1)

데이터를 SOAP서버에 보낼 때, 그 데이터는 반드시 특정한 방
식으로 표현되어야 서버가 그 데이터를 이해할 수 있다.





<Envelope>


<Envelope>,<Body>:require
<Header>:option
<Fault>:error가 발생했을 때만 require
모든 속성(encodingStyle, mustUnderstand, actor):option
SOAP의 Envelope 네임스페이스인
http://schemas.xmlsoap.org/soap/envelope/에 속하는 요소
<Body>


SOAP메시지의 main body를 포함하는 요소이다.
실제의 RPC호출들은 <Body>요소의 직계 자식으로 쓰이게 되고,
이를 body entry라고 한다.
Envelope-(2)

<Header>



SOAP메시지에서 호출하고 있는 프로시저에 의해
정의되는 내용 이외의 부가적인 정보를 넣어 줄 필
요가 있을 때 사용된다.
<Header>에 들어가는 요소들을 header entry라고
한다.
MustUnderstand 속성


SOAP서버가 헤더에 있는 메시지를 처리하는 것이
절대적으로 필요한 것인지 아닌지를 규정하는 데
사용된다.
이 속성 값이 “1”인 경우 헤더 엔트리가 필수가 되
지만, “0”인 경우 헤더 엔트리는 옵션이 된다.
Envelope-(3)

actor속성




SOAP메시지가 몇 개의 애플리케이션을 통해 최종 목적지에
전달될 때, 중간에 있는 컴퓨터를 SOAP intermediary라 한
다.
특정 SOAP intermediary를 거칠 때 수행될 필요가 있는
SOAP헤더들에 대해 규정해 줄때 actor 속성을 사용
이 값은 URI이며, 각각의 intermediary를 고유하게 식별한다.
<Fault>

메시지 처리에 필요한 리소스가 충분하지 않거나, 잘못된 파
라미터가 전달되거나, SOAP 요청을 제대로 이해하지 못하
는 경우 SOAP서버가 클라이언트에 오류를 알리는 fault코드
를 리턴
Envelope-(4)
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope">
<SOAP-ENV:Header>
<head-ns:someHeaderElem xmlns:head-ns="some URI"
soap:mustUnderstand="1" soap:actor="some URI"/>
</SOAP-ENV:Header>
<SOAP_ENV:Body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" >
<some-ns:someElem xmlns:some-ns="some URI"/>
<!--or-->
<SOAP-ENV:Fault>
<faltcode/>
<faltstring/>
<faultactor/>
<detail/>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
SOAP Message
SOAP Envelope
SOAP Header
Block
Block
SOAP Body
Block
Block
SOAP 페이로드
encoding rule



개발자들에게 SOAP이 유용한 것이 되기 위해
서는 SOAP Body안에서도 이와 같은 종류의
데이터형들에 대한 정보를 전달할 수 있는 수
단이 제공되어야 할 필요가 있다.
따라서, SOAP스펙에 일단의 encoding rule
들에 대한 내용이 포함되었다.
이 rule들은 SOAP메시지를 통해 전송되는
XML에 복잡한 데이터 형식 및 직렬화된 객체
들을 사용할 수 있도록 해준다.
Web Service

SOAP이 단순히 원격 프로시저 호출을 가능하게 하는 분산 컴퓨
팅의 문제의 일부분을 가능하게 하는 것이라고 하면, Web
Service는 SOAP을 통해 프로시저를 사용하고 싶으면, 그 프로
시저가 위치하는 곳(URL)은 어디이고, 그 프로시저가 정확하게
어떤 정보를 전달해야 하는 지(SOAP 메시지의 바디형식은 어떻
게 되는지)를 알 수 있는 기능과 그 밖에, 프로시저가 어떤 정보
를 리턴하는지에 대하여 알 수 있는 기능들을 제공한다.

WSDL(Web Service Description Language)


웹 서비스와 그 이외의 시스템 사이에 계약을 맺을 수 있게 하는 XML기
반 언어
UDDI(Universal Discovery, Description, and Integration)

웹 서비스들을 등록할 수 있게 해주어서 사용자들이 다른 웹 서비스들
을 찾을 수 있게 해준다.