[Develope]

응용 서비스 개발 방법과 국내외 개발현황②

하늘을닮은호수M 2006. 8. 8. 10:49
반응형

출처 : http://www.ionthenet.co.kr/newspaper/view.php?idx=10019&forum=0

응용 서비스 개발 방법과 국내외 개발현황②

웹 서비스 기반의 개방형 API에 대한 관심이 BcN의 진행과 함께 높아지고 있다. 지난 호 까지 팔레이 X의 여러 개방형 서비스 API를 알아봤다. 이번 호를 마지막으로 개방형 API 구현 기술을 바탕으로 한 응용 서비스 개발에 대해 알아보고, 더불어 국내외 개발 현황도 살펴보자.


김형환_한국전자통신연구원, 개방형서비스플랫폼팀 선임연구원

웹 서비스 표준
웹 서비스로 만든 애플리케이션의 기능을 웹에 알리고 애플리케이션의 구현, 프로그래밍 언어, 또는 컴퓨터 플랫폼에 상관없이 인터넷 망에서 다른 애플리케이션들과 통신할 수 있도록 하기 위해서는 표준화된 방법을 따라야 한다. 표준화된 방법에 관한 규격들은 W3C, OAIS, WS-I 등의 표준화 기구에서 만들고 있다. 웹 서비스의 기본 기술을 중심으로 많은 부분들에 대한 표준화가 완료됐지만, 기업에 대한 웹 서비스의 적용을 위한 부분들은 현재에도 진행되고 있다.
웹 서비스의 기본 기술에 대한 표준들에는 XML, SOAP, WSDL, UDDI 등이 있다.

·XML : XML은 W3C에서 규정한 텍스트 기반 마크업 언어 규격이다. HTML이 각 태그와 속성의 의미가 무엇이고, 태그들 가운데의 텍스트가 어떻게 브라우저에 보일 것인지를 기술하는 반면에, XML은 태그를 데이터들의 분리자로 사용할 뿐만 아니라 데이터에 대한 해석을 완전히 그것을 읽는 애플리케이션에 맡긴다.
·SOAP : SOAP은 분산 환경에서 원격 애플리케이션 간에 정보를 교환하는데 사용하는 경량 프로토콜이다. SOAP은 웹 서비스의 호출과 응답시에 교환되는 정보를 표현하는 프로토콜로서 다른 전송용 프로토콜에 의해서 전송돼야 하므로 보통 HTTP가 사용된다. SOAP은 XML 문서 형태를 가지며 하나의 객체가 다른 객체의 메소드를 원격 호출해서 실행시키는 객체지향 프로그래밍처럼 원격 호출과 응답들에 관한 메시징 프로토콜을 정의하고 있다. 또한 SOAP은 XML 문서 형태이므로 플랫폼, 운영체제, 객체모델, 프로그래밍 언어에 독립적으로 구현이 가능해 어떤 업체에도 종속되지 않는다.
·WSDL : 웹 서비스의 인터페이스를 표준화된 방식으로 작성하는 XML 형태의 어휘이다. 서비스의 사용을 위한 원격 메소드 호출과 응답 메시지, 패러미터와 데이터형을 나타낼 수 있고 서비스의 위치와 바인딩에 관한 상세 사항들을 정의할 수 있다. 서비스 공급자들은 이런 내용들로 구성된 WSDL 문서를 공개한다.
·UDDI : 웹 서비스의 공개와 검색을 위한 XML 레지스트리의 구현과 사용 방법을 표준화 한 것이다. UDDI 규격에는 웹 서비스 중개자가 운영해야 하는 XML 레지스트리의 기능과 웹 서비스 제공자가 자신의 웹 서비스를 공개하는 방법, 그리고 웹 서비스 소비자가 검색하는 방법들에 관해 기술돼 있으며 서비스 중개자를 구현할 수 있는 SOAP API를 제공한다.

W3C에서 정의한 웹 서비스 구조의 스택을 (그림 2)에 나타냈다. 그림의 프로세서 계층에는 UDDI 표준, 디스크립션(Descriptions) 계층에는 WSDL 표준, 메시지 계층에는 SOAP 표준이 속하며 XML 표준은 (그림 2)에서 표현된 것처럼 기본 기술에 해당한다.

웹 서비스 표준 구현 기술
이제는 이런 웹 서비스 표준들을 라이브러리 형태로 구현해 웹 서비스 생성과 소비를 가능하게 하는 기술들에 대해 알아보자. 앞에서 언급한 웹 서비스 표준들을 라이브러리 형태로 구현한 자바 클래스들이 있다. 이들은 웹 서비스 플랫폼에 포함된 형태로 존재하며, 이런 웹 서비스 플랫폼을 이용하면 손쉽게 웹 서비스를 개발하고 사용할 수 있다.
여기서는 자바 언어로 구현된 웹 서비스 플랫폼들에 포함돼 있는 표준 기술들에 관해 기술한다. 표준을 구현한 기술들에는 여러 가지가 있지만 가장 기본적인 것만을 기술하고 나머지는 참고문헌을 보도록 한다(http://java.sun.com/xml/{jaxp|jaxrpc|jaxr|saaj}).

·XML 처리를 위한 자바 API(JAXP)
JAXP(Java API for XML Processing)는 XML 문서를 파싱(parsing)하고 처리하기 위한 벤더 중립적인 API들이다. XML은 웹 서비스를 위한 공통 언어이기 때문에 XML 파서는 웹 서비스들간에 교환되는 메시지(XML 문서)들을 처리하기 위해 꼭 필요하다. JAXP를 이용하면 웹 서비스의 생성과 사용을 위한 프로그램 개발 시에 XML 파서를 구현하지 않아도 된다.
JAXP는 XML 문서를 처리하는데 SAX(Simple API for XML)나 DOM(Document Object Model) 모델을 사용하고 문서를 처리하는 동안에 XSLT(eXtensible Stylesheet Language Transformation) 엔진을 사용할 수 있어서 처리하는 XML 문서를 편집할 수도 있다. JAXP의 API는 javax.xml.parsers 패키지를 통해 사용할 수 있다. SAX와 DOM 모델의 파서에 대한 개념은 (그림 3)에 나타냈다.

·XML 기반 RPC를 위한 자바 API(JAX-RPC)
JAX-RPC(Java API for XML-based RPC)는 자바와 J2EE 플랫폼에서 XML 기반 RPC를 지원한다. 또한 XML 기반 프로토콜(SOAP)을 이용해 전통적인 클라이언트 서버 RPC 메커니즘을 가능하게 해준다.
JAX-RPC 프로그래밍 모델을 이용해 WSDL 파일에 기술된 서비스의 해당 내용에 따라, SOAP을 토대로 하는 웹 서비스 종단점과 클라이언트들을 개발할 수 있다. JAX-RPC를 토대로 구현된 웹 서비스는 같은 자바 언어가 아닌 다른 언어로 구현된 클라이언트들과도 연동이 가능하다. 마찬가지로 JAX-RPC를 토대로 구현된 클라이언트도 같은 자바 언어가 아닌 다른 언어로 구현된 웹 서비스 서버들과도 연동이 가능하다.
JAX-RPC의 또 다른 중요 사항은 JAX-RPC가 WSDL/XML과 자바 언어간에 표준 매핑을 정의하고 있다는 점이다. 매핑은 WSDL/XML에서 기술하는 데이터형과 오퍼레이션을 자바 언어의 데이터형과 메소드로 변환하거나 그 반대의 경우를 의미한다. 또한, 표준 데이터형의 매핑 이외에도 데이터형에 대해 사용할 수 있는 API들을 정의하고 있다. 이 API들을 이용해 표준 매핑을 확장한 매핑에 대한 직렬화(serializer)와 비직렬화 기능(de-serializer)을 구현할 수 있다. JAX-RPC의 구조는 (그림 4)를 통해 알 수 있다.

·XML 레지스트리를 위한 자바 API(JAXR)
JAXR(Java API for XML Registries)는 비즈니스 레지스트리를 접근하기 위한 자바 API로써 UDDI나 다른 레지스트리 규격들(예, ebXML)을 지원하는 유연한 구조를 갖는다. JAXR을 이용해 웹 서비스에 대한 정보가 저장되는 레지스트리와 이 레지스트리에서 원하는 웹 서비스를 검색하는 클라이언트를 구현할 수 있다.

·SOAP 첨부를 위한 자바 API(SAAJ)
SAAJ(SOAP with Attachments API for Java)는 SOAP 1.1 규격과 첨부물이 있는 SOAP에 호환되는 메시지들을 만들고 사용할 수 있게 해주며 첨부물이 있는 SOAP 메시지를 다루기 위한 추상화를 제공한다. XML 문서의 전체나 일부분, 또는 MIME형 첨부물이 첨부될 수 있다. JAX-RPC는 내부적으로 SOAP의 복잡한 부분들을 개발자에게 숨기기 위해서 SAAJ를 사용하고 있다. SAAJ는 다음과 같은 메시지 교환 모드들을 허용하고 있다.

· 동기식 요청-응답 메시징 : 클라이언트가 메시지를 보내고 응답을 기다림.
· 단방향 비동기식 메시징(fire and forget 이라고도 함) : 클라이언트가 메시지를 보내고 응답을 기다리지 않고 하던 일을 계속함.

상세한 내용은 SAAJ 규격을 참조하기 바란다.

반응형

'[Develope]' 카테고리의 다른 글

XML parser  (0) 2006.08.08
응용 서비스 개발 방법과 국내외 개발현황③  (0) 2006.08.08
응용 서비스 개발 방법과 국내외 개발현황①  (0) 2006.08.08
Relationships  (0) 2006.07.25
2003 서버 설치후 조정하기  (0) 2006.07.13