반응형

SOAP(Simple Object Access Protocol)는 응용 프로그램의 분산 요소가 통신할 수 있도록 하는 메시지 프로토콜입니다. SOAP는 웹 관련 HTTP (Hypertext Transfer Protocol)를 비롯한 다양한 표준 프로토콜 을 통해 수행될 수 있습니다.

 

SOAP는 프로그래밍 언어가 다른 응용 프로그램의 중간 언어로 개발되어 이러한 응용 프로그램이 인터넷을 통해 서로 통신할 수 있도록 합니다. SOAP는 유연하고 독립적이므로 개발자가 기능과 기능을 추가하는 동시에 다양한 언어로 SOAP API (응용 프로그래밍 인터페이스)를 작성할 수 있습니다.

 

SOAP는 일반적으로 XML (Extensible Markup Language)을 사용하여 웹 API를 만드는 데 사용되는 경량 프로토콜 입니다인터넷, HTTP, SMTP(Simple Mail Transfer Protocol) 및 전송 제어 프로토콜 을 통한 광범위한 통신 프로토콜을 지원합니다 . SOAP 접근 방식은 SOAP 메시지가 처리되는 방법, 포함된 기능 및 모듈, 지원되는 통신 프로토콜 및 SOAP 메시지 구성을 정의합니다. SOAP XML 정보 세트를 메시지 형식으로 사용하고 메시지 전송 및 협상을 위해 HTTP와 같은 응용 프로그램 계층 프로토콜에 의존합니다.

 

애플리케이션 간의 데이터 교환은 오늘날의 네트워크 환경에서 매우 중요합니다그러나 이러한 이기종 애플리케이션 간의 데이터 교환은 복잡할 것입니다이 데이터 교환을 수행하기 위한 코드의 복잡성도 마찬가지입니다.

 

이러한 복잡성을 해결하는 데 사용되는 방법 중 하나는 응용 프로그램 간에 데이터를 교환하기 위한 중간 언어로 XML(Extensible Markup Language)을 사용하는 것입니다.

모든 프로그래밍 언어는 XML 마크업 언어를 이해할 수 있습니다따라서 XML은 데이터 교환의 기본 매체로 사용되었습니다. 그러나 데이터 교환을 위한 모든 프로그래밍 언어에서 XML 사용에 대한 표준 사양은 없습니다그것이 SOAP 소프트웨어가 등장하는 곳입니다.

 

SOAP HTTP를 통해 XML과 함께 작동하도록 설계되었으며 모든 응용 프로그램에서 사용할 수 있는 일종의 사양을 가지고 있습니다. SOAP 프로토콜에 대한 자세한 내용은 다음 장에서 살펴보겠습니다.

 

SOAP의 장점

SOAP는 응용 프로그램 간의 데이터 교환에 사용되는 프로토콜입니다다음은 SOAP가 사용되는 이유에 대한 몇 가지입니다.

 

SOAP 기반 웹 서비스를 개발할 때 웹 서비스가 클라이언트 응용 프로그램과 통신하는 데 사용할 수 있는 일부 언어가 필요합니다. SOAP는 이러한 목적을 달성하기 위해 개발된 완벽한 매체입니다이 프로토콜은 모든 웹 표준의 관리 기관인 W3C 컨소시엄에서도 권장합니다.

 

SOAP는 응용 프로그램 간의 데이터 교환에 사용되는 경량 프로토콜입니다. SOAP 프로그래밍은 그 자체가 경량 데이터 교환 언어인 XML 언어를 기반으로 하기 때문에 SOAP도 같은 범주에 속하는 프로토콜입니다.

 

SOAP는 플랫폼에 독립적으로 설계되었으며 운영 체제에도 독립적으로 설계되었습니다따라서 SOAP 프로토콜은 Windows 및 Linux 플랫폼 모두에서 모든 프로그래밍 언어 기반 응용 프로그램을 작동할 수 있습니다.

 

HTTP 프로토콜에서 작동합니다. SOAP는 모든 웹 응용 프로그램에서 사용하는 기본 프로토콜인 HTTP 프로토콜에서 작동합니다따라서 World Wide Web에서 작동하기 위해 SOAP 프로토콜에 구축된 웹 서비스를 실행하는 데 필요한 일종의 사용자 정의가 없습니다.

 

 SOAP 빌딩 블록 및 메시지 구조 예

Simple Object Access Protocol은 사양으로 웹 서비스 및 클라이언트 응용 프로그램에 전송되는 SOAP 메시지를 정의합니다. SOAP 메시지는 다음 세 가지 기본 빌딩 블록으로 구성된 XML 문서입니다.

 

1.     SOAP envelop는 메시지의 모든 데이터를 캡슐화하고 XML 문서를 SOAP 메시지로 식별합니다.

2.     Header 요소는 SOAP 메시지에 대한 추가 정보를 포함합니다이 정보는 예를 들어 호출 애플리케이션에서 사용하는 인증 자격 증명일 수 있습니다.

3.     Body 요소에는 웹 서비스에서 호출 응용 프로그램으로 보내야 하는 실제 메시지의 세부 정보가 포함됩니다이 데이터에는 통화 및 응답 정보가 포함됩니다.

 

오류 메시지는 선택적 네 번째 빌딩 블록입니다. SOAP 오류가 생성되면 HTTP 500 오류로 반환됩니다오류 메시지에는 오류 코드, 문자열, 행위자 및 세부 정보가 포함됩니다.

 

 

아래의 간단한 SOAP 메시지의 예를 살펴보고 요소가 실제로 수행하는 작업을 살펴보겠습니다.

SOAP 메시지 구조

 

위의 SOAP 메시지에서 볼 수 있듯이 SOAP 메시지의 첫 번째 부분은 전체 SOAP 메시지를 캡슐화하는 데 사용되는 봉투 요소입니다.

 

다음 요소는 실제 메시지의 세부사항을 포함하는 SOAP 본문입니다.

우리 메시지에는 "Guru99WebService"라는 이름의 웹 서비스가 포함되어 있습니다.

"Guru99Webservice" 'int' 유형의 매개변수를 허용하며 이름은 TutorialID입니다.

이제 위의 SOAP 메시지가 웹 서비스와 클라이언트 응용 프로그램 간에 전달됩니다.

 

위의 정보가 클라이언트 애플리케이션에 얼마나 유용한지 알 수 있습니다. SOAP 메시지는 클라이언트 애플리케이션에 웹 서비스의 이름이 무엇인지, 웹 서비스가 예상하는 매개변수와 웹 서비스에서 사용하는 각 매개변수의 유형을 알려줍니다.

  

SOAP는 어떻게 작동합니까?

SOAP 요청은 응답을 생성하고 처리하기 쉽습니다먼저 클라이언트  XML 문서를 사용하여 서비스 요청을 생성합니다다음으로 SOAP 클라이언트는 XML 문서를 SOAP 서버로 보냅니다서버가 SOAP 메시지를 수신하면 요청된 서버 측 애플리케이션에 서비스 호출로 메시지를 보냅니다클라이언트에 대한 요청된 매개변수, 반환 값 및 데이터가 포함된 응답은 먼저 SOAP 요청 핸들러에 반환된 다음 요청 클라이언트에 반환됩니다. SOAP 요청과 응답은 모두 HTTPS (Hypertext Transfer Protocol Secure) 또는 HTTP와 같은 유사한 프로토콜을 사용하여 전송됩니다.

 

SOAP 장점과 단점

SOAP는 서비스 지향 아키텍처SOA )  웹 서비스 사양의 필수적인 부분입니다.

 

SOAP의 장점은 다음과 같습니다.

·  플랫폼 및 운영 체제에 독립적입니다SOAP는 다양한 프로토콜을 통해 수행될 수 있으므로 Windows Linux 모두에서 서로 다른 프로그래밍 언어를 사용하는 응용 프로그램 간의 통신이 가능합니다.

 

· HTTP 프로토콜에서 작동합니다SOAP는 다양한 프로토콜과 함께 작동하지만 HTTP는 웹 응용 프로그램에서 사용하는 기본 프로토콜입니다.

 

· 다른 네트워크 및 보안 장치를 통해 전송할 수 있습니다SOAP는 다른 프로토콜에 특별한 조정이 필요할 수 있는 방화벽 을 통해 쉽게 전달할 수 있습니다.

 

그러나 다음과 같은 단점이 있습니다.

· 참조로 데이터를 전달하는 조항이 없습니다동일한 개체의 여러 복사본이 동시에 전달되는 경우 동기화 문제가 발생할 수 있습니다.

 

·  속도SOAP의 데이터 구조는 XML을 기반으로 합니다. XML은 대부분 사람이 읽을 수 있으므로 SOAP 메시지를 상당히 쉽게 이해할 수 있습니다그러나 이것은 또한 바이너리 데이터를 수용할 CORBA(Common Object Request Broker Architecture)  RPC (원격 프로시저 호출) 프로토콜에 비해 메시지를 상대적으로 크게 만듭니다이 때문에 CORBA RPC가 더 빠릅니다.

 

· 다른 방법만큼 유연하지 않습니다SOAP는 유연하지만 RESTful 아키텍처와 같은 새로운 방법은 XML, JavaScript Object Notation , YAML 또는 필요한 모든 파서를 사용하므로 SOAP보다 유연합니다.

 

SOAP API

SOAP는 웹 서비스 또는 SOA 프레임워크의 컨텍스트에서 거의 항상 사용되는 프로토콜입니다따라서 해당 API는 일반적으로 SOA에 대한 상위 수준 인터페이스에 의해 숨겨집니다. SOA API 미들웨어 도구는 거의 모든 최신 프로그래밍 언어에 사용할 수 있으며 Microsoft는 다양한 .NET SOAP SOA 도구를 제공합니다.

 

SOAP REST

SOAP는 보안 및 제어를 잃지 않으면서 기존의 모놀리식 애플리케이션을 다중 구성 요소의 분산 형태로 분해하도록 설계되었습니다이와 대조적으로 REST (REpresentational State Transfer) HTTP 프로토콜과 웹 서버가 클라이언트를 지원하는 방식을 기반으로 하는 분산 컴퓨팅 상호 작용의 모델입니다. REST over HTTP는 거의 항상 최신 마이크로서비스 개발 및 통신의 기초입니다RESTful API GET, PUT, POST DELETE 데이터에 대한 HTTP 요청을 사용합니다.

 

REST over HTTP는 간단하고 유연하며 가벼우며 정보를 교환하는 방법 이상을 제공합니다. SOAP HTTP에서도 사용할 수 있지만 웹 서비스 및 SOA 프레임워크와 같은 복잡한 분산 컴퓨팅 도구 세트의 요소와 애플리케이션 구성 요소를 연결하며 이는 전체 서비스 지향 프레임워크의 일부를 형성합니다.

 

단순 개체 액세스 프로토콜의 미래

SOAP는 서비스 지향 아키텍처에서 웹 서비스를 연결하는 데 널리 사용되는 최초의 프로토콜입니다오늘날 분산 애플리케이션의 현대적인 개발은 주로 RESTful 원칙을 기반으로 합니다. SOAP는 거의 항상 레거시 플랫폼으로 제한 됩니다SOAP가 여전히 사용되는 영역 중 하나는 온라인 트랜잭션을 처리하는 응용 프로그램입니다. 이는 더 엄격하고 프로토콜 기반의 API 스타일이기 때문입니다.

 

SOAP 통신 모델

SOAP에 의한 모든 통신은 HTTP 프로토콜을 통해 이루어집니다. SOAP 이전에는 많은 웹 서비스가 통신을 위해 표준 RPC(원격 프로시저 호출) 스타일을 사용했습니다이것은 가장 단순한 형태의 의사소통이지만 많은 한계가 있었습니다.

이제 이 SOAP API 자습서에서 이 통신이 어떻게 작동하는지 보기 위해 아래 다이어그램을 살펴보겠습니다이 예에서 서버가 다음과 같이 2가지 방법을 제공하는 웹 서비스를 호스팅한다고 가정해 보겠습니다.

 

GetEmployee – 모든 직원 세부 정보를 가져옵니다.

SetEmployee – 직원 부서, 급여 등과 같은 세부 정보 값을 적절하게 설정합니다.

 

일반적인 RPC 스타일 통신에서 클라이언트는 요청에 있는 메서드를 호출하고 필요한 매개변수를 서버에 보내고 서버는 원하는 응답을 보냅니다.

 

위의 통신 모델에는 다음과 같은 심각한 제한 사항이 있습니다.

 

언어 독립적 이 아님 - 메서드를 호스팅하는 서버는 특정 프로그래밍 언어로 되어 있으며 일반적으로 서버에 대한 호출은 해당 프로그래밍 언어로만 이루어집니다.

 

표준 프로토콜이 아님 – 원격 프로시저에 대한 호출이 이루어지면 호출은 표준 프로토콜을 통해 수행되지 않습니다이것은 웹을 통한 대부분의 통신이 HTTP 프로토콜을 통해 이루어져야 했기 때문에 문제였습니다.

 

방화벽 – RPC 호출은 일반 프로토콜을 통하지 않기 때문에 클라이언트가 서버와 통신할 수 있도록 서버에서 별도의 포트를 열어야 합니다일반적으로 모든 방화벽은 이러한 종류의 트래픽을 차단하며 클라이언트와 서버 간의 이러한 종류의 통신이 작동하도록 하려면 일반적으로 많은 구성이 필요했습니다.

 

 

위에 언급된 모든 제한 사항을 극복하기 위해 SOAP는 다음 통신 모델을 사용합니다.

클라이언트는 프로시저 호출 및 인수에 관한 정보를 SOAP 메시지로 형식화하고 이를 HTTP 요청의 일부로 서버에 보냅니다데이터를 SOAP 메시지로 캡슐화하는 이 프로세스를 마샬링이라고 합니다.

그런 다음 서버는 클라이언트가 보낸 메시지를 풀고 클라이언트가 요청한 내용을 확인한 다음 적절한 응답을 SOAP 메시지로 클라이언트에 다시 보냅니다클라이언트가 보낸 요청을 래핑 해제하는 방식을 디마샬링이라고 합니다.

 

 

 

반응형

'Onvif' 카테고리의 다른 글

XML 네임스페이스  (0) 2022.10.20
SOAP 메시지 구조 -2  (0) 2022.10.19
SOAP 메시지 구조 -1  (0) 2022.10.18

+ Recent posts