[SOAP] SOAP 개요

2017. 2. 9. 10:52Study/SOAP

SOAP 개요




출처 : https://ko.wikipedia.org/wiki/SOAP

SOAP(Simple Object Access Protocol)


일반저긍로 널리 알려진 HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜이다. SOAP은 웹 서비스에서 기본적인 메시지를 전달하는 기반이된다. SOAP에는 몇가지 형태의 메시지 패턴이 있지만, 보통의 겨우 원격 프로시져 호출(Remote Procedure Call:RPC) 패턴으로, 네트워크 노드(클라이언트)에서 다른 쪽 노드(서버)쪽으로 메시지를 요청 하고, 서버는 메시지를 즉시 응답하게된다. SOAP은 XML-RPC와 WDDX에서 envelope/header/body로 이루어진 구조와 전송(transport)와 상호 중립성(interaction neutrality)의 개념을 가져왔다.


SOAP은 XML을 근간으로 헤더와 바디를 조합하는 디자인 패턴으로 설계되어 있다. [헤더]는 선택사항으로 반복이나 보안 및 트랜잭션을 정보로 하는 메타정보를 가지고 있다. [바디] 부분은 주요한 정보인 정보를 가지고 있다.




출처 : http://www.slideshare.net/seunghochoi4/soap-restful


SOA 란?

기존의 어플리케이션들의 기능들을 비즈니스적인 의미를 가지는 기능 단위로 묶어서 표준화된 호출 인터페이스를 통해 소프트웨어 컴포넌트 단위로 재조합 후, 해당 서비스를 서로 조합하여 업무 기능을 구현한 어플리케이션을 만들어 내는 소프트웨어 아키텍처



SOAP 기반 웹 서비스

응용프로그램 간에 연동을 목적으로 상호 이해 가능한 포맷의 메시지를 SOAP으로 송,수신함으로 원격지에 있는 서비스 객체나 API를 자유롭게 사용하고자 하는 기업의 요구에서 출발


데이터가 XML로 표현된다.


UDDI(Universal Description, Discovery and Integration)

웹 서비스를 등록하고 검색하기 위한 저장소로 웹 서비스를 공개적으로 접근, 검색이 가능하돋록 공개된 레이스트리. 모든 데이터가 XML로 표현되고, 데이터와 데이터를 다루는 오퍼레이션들이 WSDL로 정의되면, UDDI라는 전역적인 서비스 저장소에 등록되어, 누구라도 서비스를 찾을 수 있도록 공개.




WSDL(Web Services Description Language)은 웹 서비스 기술언어 또는 기술된 저의 파일의 총칭으로 XML로 기술된다. 웹 서비스의 구체적 내용이 기술되어 있어 서비스 제공 장소, 서비스 메시지 포맷, 프로토콜 등이 기술된다.


What is the SOAP?



HTTP. HTTPS, SMTP등을 통해 XML 기반의 메시지를 컴퓨터 상에서 교환하는 프로토콜


단, 그림과 같이 SOAP Envelope, SOAP Header, SOAP Body로 구성된 하나의 XML 문서로 표현됨.

복잡한 구조를 가지게 되어 HTTP 상에서 전달 되기 무겁고, 메시지 인코딩/디코딩 과정등 웹서비스 개발의 난이도 높음.

개발환경의 지원이 필요함.



특정 분산 기술 또는 플랫폼에 의존하지 않으며, 분산 객체에 엑세스 할 수 있는 프로토콜로 HTTP 상에서 전송됨.


서비스는 발견이 가능하며, 동적 바인딩이 가능

서비스는 컴포넌트와 같이 독립된 모듈

서비스는 느슨하게 연결

서비스의 조립이 가능

플랫폼과 무관






출처 : https://ko.wikipedia.org/wiki/JAX-WS

JAX-WS (Java API for XML Web Services)

웹 서비스를 생성하는 자바 API로서, Java EE의 일부이다. 다른 Java EE의 자바 API와 같이, JAX-WS는 Java SE 5에서 도임된 어노테이션(annotation)을 사용하여 웹 서비스 클라이언트 및 모듈의 개발 및 배포를 쉽게 하고 있다.

기존에는 JAX-RPC이었으나, Java EE 5에서 JAX-WS로 변경되었다. 이러한 명치의 변경은 웹 서비스가 RPC 타입에서 도큐먼트 타입으로 변경되는 것을 반영한 것이다. 따라서 JAX-RPC 2.0은 JAX-WS 2.0으로 변경 되었다.



출처 : http://egloos.zum.com/dryang/v/4005379


Apache CXF 개요

Apache CXF는 오픈 소스 서비스 프레임워크이다. 웹 서비스를 구현하기 위한 오픈 소스 프레임워크로는 Apache CXF 이외에도 Apache Axis2, Metro, Spring Web Service등의 다양한 프로젝트가 존재하는 데 이 중에서 CXF와 Axis2가 가장 많이 사용되고 있다. 우리도 두 프로젝트를 비교한 후에 성능과 유연성, 용이성 측면에서 보다 나은 거승로 보이는 CXF로 최종 선정하였다.



CXF가 지원하는 주요기능 및 특징


1. SOAP, REST/HTTP, XML/HTTP, CORBA 등의 다양한 프로토콜 바이딩을 지원한다.

2. JSR(Java Specification Requests)에 규격화된 JAX-WS(Java API for XML  Web Service), JAX-RS(Java API for RESTful Web Service)와 긑은 프로그래밍 API를 사용하여 서비스를 지원한다.

3. 다양한 데이터 바인딩 프레임워크아 연동이 가능하다. (JAXB 2.x, Aegis, JIBX 등)

4. WSDL 생성을 지원한다. (Java to WSDL, XSD to WSDL 등)

5. POJO(Plain Old Java Object)를 이용한 웹 서비스 구축이 가능하다.

6. WS-Security, WS-Addressing 등 WS-* 관련 기반기숭을 지원한다.

7. High Performance(고성능), Extensible(확장 가능한), Easy to Use(순쉬운 사용) 을 지향한다.


JAXB 개요


JAXB(Java Architecture for XML Binding)는 자바 클래스를 XML로 표현하는 자바 API이다. 웹 서비스에서는 데이터 바인딩 역할을 수행한다. JAXB는 주고 두가지 기능이 있는데, 자바 객체를 XML로 직렬화하는(Marshalling) 곳과 반대로 XML에서 자바 객체로 역질렬화하는 (Unmarshalling) 것이다.

데이터 바인딩을 위한 오픈 소스 프레임워크로는 JiBX가 많이 사용되고 있다. 우리도 처음에 CXF + JiBX를 연계하여 구축하려고 하였으나, CXF + JAXB로 전환하여 진행하게 되었다.

JAXB의 적용 방법은 비교적 간단한 편이다.

























[참고]

1. 





'Study > SOAP' 카테고리의 다른 글

[SOAP] JAX-WS Annotation  (0) 2017.02.09