모르는 단어

gSOAP

예쁜꽃이피었으면 2014. 7. 31. 14:05

http://coord.tistory.com/1


1. gSOAP 소개

웹서비스 개발은 java로만 해야 한다는 생각은 버리는 것이 좋겠다.
gSOAP은 c/c++ 기반의 SOAP/XML 웹서비스 개발을 가능케 해주는 툴킷을 제공한다.
wsdl2h는 웹서비스의 표준화된 기술스펙인 wsdl을 c/c++언어의 header 파일로 변환해 주고
soapcpp2는 이렇게 생성된 header파일을 기반으로 c/c++언어의 stub/skeleton 코드를 생성한다.
결국 gSOAP을 활용하면 java로 개발한 AXIS 기반의 웹서비스를 c/c++로 개발한 클라이언트에서 맘껏 주무를 수 있다는 말이고
바낻로 c/c++로 개발한 stand-alone 웹서비스나 Apache기반의 웹서비스를 java로 개발한 클라이언트로 역시 떡 주무르듯이 주물러 줄 수 있다
.
이제 몇가지 gSOAP의 주요 특성들을 파악해 보면서 왜 gSOAP이어야 하는지 살펴보자.


2. gSOAP의 주요특성
  • c/c++ primitive data type 뿐만 아니라 user-defined c/c++ data structures까지로 완벽하게 SOAP marshalling/unmarshalling할 수 있다.
  • paltform 독립적이기 때문에, Windows, Unix, Linux, Mac OS X, 심지어 경량의 device인 Pocket PC, Palm OS, Symbian 등등에서도 효율적으로 사용될 수 있다. 
  • Zlib deflate와 gzip compression을 지원한다.
  • SSL(HTTPS)를 지원한다.
  • IPv4/IPv6 모두를 지원한다.
  • wsdl2h를 통하여 wsdl을 해석하여 c/c++ header파일을 생성하거나 그 반대로 웹서비스 퍼블리싱을 위하여 wsdl을 생성할 수 있다.
  • stand-alone Web Service를 생성할 수 있다. 즉, HTTP, CGI 기반의 개발을 따로 필요로 하지 않는다. 물론 Apache기반의 gSOAP 모듈을 따로 지원한다.
  • three-phase serialization method를 사용함으로써 대량의 데이터를 송수신할때 content length를 계산하기 위하여 전체 data를 buffering할 필요가 전혀 없다. 즉, small-memory devices(PDA)를 위하여 DIME attachment없이도 얼마든지 base64-encoded images과 같은 큰 데이터를 전송할 수 있다.
  • c++ 기반의 다양한 언어적 특성을 완벽하게 지원한다.
    • single class inheritance, dynamic binding, overloading, arbitrary pointer sturctures(list, tree, graph, cyclic graph, fixed array, multi-dimensional dynamic array, enumeration등)
  • 대부분의 기존 c/c++ 소스를 웹서비스화 하기 위하여 수정할 필요는 없다.
    • (예외) 만일 remote method invocation을 위하여 union, 메모리내의 연속적인 element들을 참조하는 pointer, 그리고 void * 같은 data type들을 serialized/deserialized하기 위해서는 "수정"해야 한다. ㅋ
  • SOAP header에 대한 customizable 처리가 가능하다. 예를 들어, 서비스의 transaction 처리를 위하여 state 정보를 유지하기 위하여 사용될 수 있다.
  • three-phase marshalling
    • pointer, single-reference, multi-reference, cyclic data structure등의 분석
    • HTTP message-length 결정
    • serialization
  • two-phase marshalling
    • multi-reference, cyclic data structure에 대한 reconstruction을 포함한 SOAP parsing 과 decoding
    • "forward" pointer들에 대한 resolution(예를 들어, SOAP에 있는 forwrad href attribute에 대한 resolution)

  • 3. 향후일정
    gSOAP에 대해서 개론적인 이야기를 했지만 우리가 원하는건 이런게 아니다.
    살아있는 따끈 따끈하고도 곧바로 사용가능한 그거.. 그걸 우리는 원한다.
    이제 슬슬 gSOAP의 세계로 날라가보자..


    반응형

    '모르는 단어' 카테고리의 다른 글

    벡터 (STL)  (0) 2014.08.06
    API, SDK 란? ( 총정리 )  (0) 2014.08.01
    QT  (0) 2014.07.31
    WSDL(Web Service Description Language)  (0) 2014.07.31
    SOAP( Simple Object Access Protocol )  (0) 2014.07.31