달력

122024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

http://blog.naver.com/ecogeo?Redirect=Log&logNo=100008723361

SOAP 인코딩 스타일에 따라 성능에 큰 차이를 보인다. 따라서 웹서비스 개발시 어떤 인코딩 방식을 사용할 것인지 신중히 선택해야 한다.  
1. 인코딩 스타일의 종류
인코딩 스타일에는 대표적으로 3가지가 있다.  
  • SOAP Remote Procedure Call (RPC) 인코딩 : Section 5 encoding으로 알려져 있으며 SOAP 1.1 스팩에 정의되어 있다
  • SOAP Remote Procedure Call Literal 인코딩 (SOAP RPC-literal): RPC 메소드를 사용하여 호출하지만 데이터 마샬링에는 XML (do-it-yourself)를 사용한다.
  • SOAP document-style encoding : message-style 또는 document-literal 인코딩으로 알려져있다.    

     2. 인코딩별 응답메시지 차이
    인코딩에 따라 SOAP 응답메시지는 아래처럼 달라진다.  
    * rpc/encoding 방식

    <multiRef id="id11" soapenc:root="0"

                   soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

                  xsi:type="ns7:RegionModel" xmlns:ns7="urn:Sky"

                 xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">

       <hh xsi:type="xsd:string">11</hh>

       <pa xsi:type="xsd:string">1021.5</pa>

       <pr xsi:type="xsd:string">1.4</pr>

       <ps xsi:type="xsd:string">1023.6</ps>

       <pt xsi:type="xsd:string">7</pt>

       <wd xsi:type="xsd:string">2</wd>

       <ws xsi:type="xsd:string">1.9</ws> </multiRef>  

    * rpc/literal 방식

    <item xmlns="">

        <hh>08</hh>

        <pa>1022.9</pa>

        <pr>.4</pr>

        <ps>1025</ps>

        <pt>3</pt>

        <wd>27</wd>

        <ws>.4</ws> </item>  

    * document/literal 방식 - rpc/literal 방식과 동일    

    3. 인코딩별 장단점 비교
    다음은 이 3가지 인코딩을 간략히 비교한 것이다.  

     

    Rpc/enc

    Rpc/lit

    Doc/lit

    퍼포먼스

    개발생산성

    파라미터객체

    불필요

    불필요

    필요

    자바xml바인딩

    불필요

    불필요

    필요

    WS-I 권고

    No

    Yes

    Yes

    입력파라미터

    2개이상 허용

    2개이상 허용

    1개만 허용

       
    4. 인코딩 스타일과 성능
    그래프에 나오듯이 Rpc/enc 방식은 전송할 데이터가 많아지면 성능이 급격히 떨어진다. 반면 rpc/lit 이나 doc/lit 방식은 대체로 만족할 만한 성능 그래프를 보여준다.
    사용자 삽입 이미지


    5.입력 파라미터 제한

    document 방식은 서비스 메소드의 input 파라미터를 하나만 허용한다.

    따라서 입력 파라미터가 2개 이상인 메소드는 파라미터를 모두 포함하는

    자바빈을 만들어 파라미터를 1개로 바꾸어주어야 한다.

    public void purchaseOrder(String item, int quantity, String description)

    => document 방식에서는 허용안됨

     

    public void method(PurchaseOrder po)

    => document에서는 파라미터 1개만 허용됨


        6. Axis에서 인코딩 설정

    /WEB-INF/server-config.wsdd 파일에서 아래처럼 세팅한다.  
    <service name="MyWebService" provider="java:RPC" style="rpc" use="encoded">
    <service name="MyWebService" provider="java:RPC" style="rpc" use="literal">
    <service name="MyWebService" provider="java:RPC" style="document" use="literal">
    - document/literal 방식의 provider는 여전히 'java:RPC'임을 주의한다.    

    7. 인코딩 스타일의 선택


    그럼 어떤 스타일을 선택해야할까? 많은 경우 이것은 개인적 선호의 문제이다. XML 생성에 얼마나 많은 노력을 기울이는가에도 달려있다. 작업 시나리오가 자바 객체로 쉽게 매핑되는 단순한 데이터 타입만을 요구한다면 RPC가 적격이다. XML 문서로 가장 잘 표현되는 많은 데이터를 보낸다면 Documnet(Message) 스타일이 맞다. 이밖에 상호운용성도 고려해야하며 개발자들은 지혜롭게 인코딩을 선택해야 한다.
      참조 http://www-903.ibm.com/developerworks/kr/webservices/library/ws-soapenc.html  

    ps. 저는 rpc/lit 방식을 선택했습니다. 개발도 쉽고 성능도 잘 나오는..ㅎㅎ
    ps2. 허걱 닷넷에서는 rpc/lit 방식을 지원하지 않네요...쩌비... 호환성문제가 있습니다. 검색해보니 MS에서는 doc/lit을 유일한 표준으로 밀고 있다고 나오는군요.. (그러나 아직은 WS-I에서 권고하는 표준에 rpc/literal이 포함돼 있습니다).

  • 'Soap & WebService' 카테고리의 다른 글

    SOAP 모델에 따른 인코딩방식  (0) 2008.08.20
    SOAP Version 1.2 스펙 한글판  (0) 2008.08.20
    SOAP message  (0) 2008.08.20
    Webservice, Soap, wsdl  (0) 2008.08.20
    soap(Simple Object Access Protocol)  (0) 2008.05.24
    Posted by 알 수 없는 사용자
    |