본문 바로가기

Dev.../플밍 관련 자료

[펌] WSDL

WSDL(Web service Definition Language)

 

   : 웹서비스를 제공하려는 서버들은 각 클라이언트(사용자)에게 자기의 웹서비스

     명세서를 제공해야 하는데 이때 WSDL를 이용하여 제공한다.

   : W3C에서 그 표준화 작업이 완료(버전1.1)

 

 

<활용 및 서비스 순서>

1. 웹서버는 WSDL문서를 작성,보관

2. 웹서버는 UDDI 레지스터리에게 URL로 WSDL문서를 공개.

3. 웹서비스 클라이언트는 UDDI레지스터리에게 웹서비스를 받고자하는 서버의 URL를 획득

4. 웹서버의 URL를 획득한 웹서비스 클라이언트는 그 웹서버에게 WSDL문서 요청

5. WSDL를 해석하여 응용프로그램을 작성..

 

더 구체적으로 말해서,

WSDL은 만약 자바(저의 경우)로 구현했다면 웹서비스의 기능, 프로시저(보통 메쏘드)의 이름, 인자. 리턴값, 프로토콜의 종류 이런거의 사용 설명서(서비스하는 메쏘드,,) 이다.

 

- 중요 특성은 WSDL은 XML로 작성했기 때문에 프로그램밍언어에 독립적이다. 다시 말해서

   웹 클라이어트는 응용프로그램을 작성할때 어떤 언어도 구해받지 않는다.

 

 

WSDL의 구조 


<definitions> // 루트 (1)

     <types> // 인자와 리턴값에서의 복합 타입 기술(0~1)

     </types>

     <message> // 인자와 리턴값에 대한 기술(1~)

                  </message>

                  <portType> //원격 프로시저를 기술(1~)

                       <operation>

                       </operation>

                  </portType>

                  <binding> // 호출에 사용되는 프로토콜에 대해 기술(1~)

                  </binding>

                  <service> //웹서비스 시스템의 URL를 기술(1~)

                       <port>

                       </port>

                  </service>

             </definitions>

 

간단한 구조로써 기술된다. 4장에서의 설명한거와 같이 서버측이 제공하고자하는 기능에대해 더 자세히 말하면 그 기능은 서버측이 구현하고 서비스하려는 메쏘드(프로시저)들에 대해 기술한다.

 

1 <definitions> Element

 

: 루트, 네임스페이스 선언

: 참고로 네임스페이스 다른 책이나 참고서 참고.^^;;(쓰기 구찬아요^^;;)

 

2 <message> Element
 

: 원격 프로시저의 인자, 리턴값에 대한 정보 기술

: 주의 해야할 점은 인자에 대한 정보가 두개 이상있을 수 있다. 그렇지만 리턴타입은 받드시

  한개이어야하죠(당연 자바나 씨의 리턴값을 생각).

: part 라는 하부 element를 사용하여 기술

 

ex) String setbook(String title, int price) 이라면,

 

->

   // 인자

  <message name = "Book1_setbook">

      <part name="String_1" type="xsd:string"/>

      <part name="int2" type="xsd:int"/>

  </message>

  // 리턴값

  <message name = "Book2_setbookResponse">

       <part name = "result" type="xsd:string"/>

  </message>