WSDL (Web Services Description Languasge) WSDL / Architecture

1. WSDL 이란? - Web Service가 제공하는 서비스에 대한 정보를 기술하기 위한 XML 기반의 마크업 언어
    ☞ 특정 비즈니스가 제공하는 서비스를 설명하고, 개이이나 다른 회사들이 그러한 서비스에 전자적으로 접근할 수 있는
        방법을 제공하기 위해 사용되는 XML 기반의 언어이다. WSDL은 마이크로소프트, IBM 및 Ariba 등에 의해 주도된 UDDI의
        기본이라 할 수 있다. 즉, UDDI는 기업들이 자신들의 서비스 내용을 인터넷 상에 스스로 등록할 수 있게 해주는 XML
        기반의 등록처이며, WSDL은 그렇게 하기 위한 언어이다.
        
        WSDL은 마이크로소프트의 SOAP와 IBM의 NASSL로부터 파생되었지만, 이제 UDDI 등록처에 비즈니스 서비스를 명시하는
        수단으로써, NASSL과 SOAP 둘 모두를 대체할 수 있다.

2. WSDL 내용
    ☞ 웹 서비스의 name 과 URL 정보
    ☞ SOAP 메시지의 인코딩 방법
    ☞ SOAP 메시지 전송을 위한 프로토콜 정보
    ☞ 웹 서비스를 이용하는데 필요한 인터페이스 정보(Type, including name, poerations, parameter, data) 

3. WSDL 역할
    ☞ 웹 서비스를 기술
    ☞ WSDL은 공표된 웹 서비스가 실제 어디에 위치하고 있고, 그 웹 서비스를 이용하기 위한 Biding 정보를 담고 있는 문서
    ☞ WSDL 정보를 해석하면 비로서 SOAP를 사용해 해당 서비스에 필요한 객체를 실행할 수 있음.
    ☞ 대부분의 경우 인터넷이나 이메일을 통해서 이러한 정보를 주고 받게 될 것임으로 HTTP나 SMTP가 가장 많이 사용하는
        전송프로토콜이 될 것임.
    ☞ WSDL은 XML로 표기되며 해당 웹 서비비의 문법적인 규격에 대한 정보만 있을 뿐, 그 웹 서비스가 갖는 의미는 표현되지
         않음.
  
4. WSDL의 구조
    ☞ 기본적으로 서비스는 하나 이상의 port를 통해 접근할 수 있으며 port는 하나의 portType에 연관되어 묶여 있다.
        portType은 서비스를 추상적으로 정의해둔 것으로 인터페이스의 개념과 같다. portType 하나는 여러개의 binding을
        가질 수 있으므로 HTTP,JMS,SMTP 등 여러 프로토콜로 접근하는 방법을 기술할 수 있음.
    ☞ 서비스를 추상적으로 정의하기 위한 항목 : <types>, <messge>, <portType>
    ☞ 실제 그 서비스가 수행되기 위한 구체적인 정보를 기술하는 항목 : <binding>, <service>
   
    <types>
    ☞ 메시지나 프로시저 컨텐츠에 대한 저수준 데이터 타입을 결정하도록 함.
    ☞ 네임스페이스의 확장성을 이용해서 다른 메커니즘을 이용할 수도 있지만, 대부분의 경우에는 XML 스키마를
        사용하는 것이 일반적임.
    <message>
    ☞ 각각의 메시지 전송과 관련한 데이터 포맷을 정의.
    <portType>
    ☞ 단일 논리 오퍼레이션을 구성하도록 메시지를 그룹화, 예를 들어 앞의 예에서는 EndorsingDrinker 요청이
        EndorsingEringker 응답을 유발하며, 문제가 발생하면 EndorsingDringkerFault 에러를 발생시키는데 이러한
        일련의 과정을 하나의 WSDL 포트 타입으로 그룹화한 것.
    ☞ WSDL 문서는 이와같이 구체적으로 물리적인 부분(테이터 타입 정의)에서 추상적이고 논리적인 부분
        (메시지와 포트타입)에 이르기까지 모두 포괄하며 이들 사이에 참조할 수 있음.
    ☞ 의미적으로 볼 때 일련의 오퍼레이션들이 속해 있는 인터페이스의 역할을 하므로 현재 개발중인 WDSL 1.2버전에서는
        엘리먼트 이름이 <interface>로 변결될 예정
     <binding>
    ☞ 논리적 모델과 물리적 모델 사이의 연결을 제공하는 것
    ☞ 연결할 때는 이미 정의한 추상적인 포트 타입을 SOAP를 어떻게 전송 할 것인지 구체적으로 기술한 실제 포트에
        연결시키면 됨.
    ☞ 요청방식이 단순히 문서를 전달하는 것인지 프로시져를 호출하는 것인지에따라 document 타입과 RPC타입 등으로
        선택 가능
    ☞ WSDL은 이 밖에도 HTTP와 MIME를 직접 이용하거나 다른 프로토콜을 이용해서 바인딩 할 수 있도록 허용
    ☞ 앞의 예에서는 바인딩에서 GetEndorsingDrinkerPortType 이 SOAP document 타입이고 네트워크 전소 프로토콜은
        HTTP로 하기로 지정됨
    <soap:operation>
    ☞ <binding>내의 <operation>의 하위 엘리먼트로 포트 타입에 있는 각각의 메시지를 SOAP 전송에 대한 정의에
        매핑하는 역할.
    ☞ 앞에서 SoapAction을 지정했는데, HTTP를 이용해서 SOAP를 사용하려면 꼭 필요한 부분임.
    ☞ SoapAction에 주어진 값은 메시지의 의도를 나타내기 위해 실제 메시지의  HTTP 헤더에서 이용해야 함.
    ☞ SOAP에 HTTP나 SMTP같은 프로토콜을 사용하면 지능형 프록시나 방화벽을 통과할 수 있기때문에
        편리하지만 그만큼 보안성에 있어서는 취약하다는 것을 고려해야 함.
    <service>
    ☞ 통신에서 종단점의 물리적 위치를 정의
    ☞ 앞서 지정한 포트 타입과 바인딩을 이용해서 서비스에 대한 웹 주소 또는 URI를 지정함. 앞에서 SOAP 서버를 설정한
        위치를 지정했으며, 이렇게 하는 것이 일반적인 방식임.





[출처] WSDL (Web Services Description Languasge)|작성자 유혹

댓글

이 블로그의 인기 게시물

누가복음 16장 1절~13절

누가복음 11장 9절 ~ 13절