Web Services & WSDL
서비스 중심의 아키텍쳐 = Next generation Web Communications + (TCP/IP) Web User Interface + (HTML) Web Programming + (Javatm) Web Data + (XML) Web Services (SOAP, WSDL, UDDI…) = Next generation 차세대 e-Business는 현재의 e-Business 아카텍쳐에 데이터 교환을 위한 XML과 서비스를 제공하는 SOAP,WSDL,UDDI 같은 Web Service 를 포함하는 구조가 된다.
Web Services – 새로운 웹 모델 현재까지 웹은 다음 서비스를 제공함 링크된 문서를 보여줌 수작업으로 수행되는 트랜잭션 이 모두가 웹 브라우저를 통해 수동으로 이루어짐 Web Services는 웹을 사용하는 새로운 모델임 트랜잭션은 프로그램에 의해 자동으로 시작함 분산 컴퓨팅 환경에서 동적으로 설명되고 공개되고 검색되고 수행됨 웹을 사용하는 새로운 방식 : 인텔리전트 에이전트, Marketplace, 경매 XML을 사용함 Web Services는 현재 제공되는 HTML 문서를 보여주고 트랜잭션을 처리하기 위해서 미리 정의된 어플리케이션을 수행하는 기능을 제공한다. 리파지토리에 서비스를 등록하고 어플리케이션을 수행하면 필요한 기능을 수행하는 서비스를 리파지토리에서 검색하고 이를 동적으로 바인딩해서 기능을 사용함 하나의 기업이 모두 개발할 필요가 없고 협력업체가 각각 강점이 있는 서비스를 작성하여 등록하면 됨
Web Services e-Business의 다음단계의 진화 비즈니스 기능(Function)을 웹으로 공개 Client/Server 모델의 자연적인 확장 e-Business를 위한 트랜잭션 모델 원격 오브젝트에서의 메쏘드 시작(SOAP) SOAP Lookup을 이용한 사용가능한 서비스와 서비스 제공자 디렉토리 (UDDI) 서비스와 서비스 제공자를 위한 XML기반의 표준 설명(Description) 언어(WSDL, WDS) e-Business는 Web Services의 기초를 형성하기위해 웹, IT & 오브젝트 기술을 통합하고 있음 Web Services는 Building Block임 기존의 분산 시스템 모델을 확장한 개방형 분산 시스템 모델임 하나의 어플리케이션을 구성하기 위해 개발자는 모든 기능을 개발하는 것이 아니고 필요한 부분만 개발하고 나머지는 리파지토리에서 가져다 사용함 – World Wide 분산 모델이 가능 Web Service에서 사용되는 기술 웹 – HTML, HTTP, Java, JSP, ASP IT – TCP/IP, XML, Repository, 객체기술 – 메쏘드 단위로 처리, Encapsulation, 객체의 호출
기존 어플리케이션 통합 여행사 서버 항공사 서버 수작업 여행사 GUI 항공사 GUI 여행사와 항공사의 어플리케이션 간의 직접적인 연결이 없음 별도의 화면을 통해 수작업 처리함
Web Services를 이용한 어플리케이션 통합 여행사 서버 항공사 서버 XML 항공사 Web Service는 여행사의 항공기 스케쥴 어플리케이션에 의해 직접 호출되고 수행됨 Web Service는 여행사의 항공기 스케쥴 어플리케이션 가용성을 향상함 여행사 어플리케이션은 직접 항공사 어플리케이션을 호출하여 데이터를 가져와서 하나의 어플리케이션에서 처리가 가능 여행사 GUI
향후 Web Services를 이용한 어플리케이션 통합 렌트카 회사 호텔 항공사 HTTP/SOAP/XML 여행사 어플리케이션 여행 e-Marketplace HTTP/HTML WAP/WML 호텔, 렌트카 등의 Web Service를 추가할 경우 여행사 직원의 역할을 제거할 수 있음 비용절감 향상된 기능 제공 새로운 어플리케이션은 항공 슽케쥴이 변경되면 자동적으로 호텔과 렌트카 예약을 변경 출발 라운지에서 e-Marketplace를 통해 항공 좌석을 판매하기 위해 WAP 폰 에서 엑세스
Web Services 컴포넌트 Service Provider e-Business 서비스 제공 레지스트리에 서비스를 공개 Service Broker 서비스의 공개와 위치를 위한 지원 제공 전화번호부 역활 Service Requester Service Broker를 통해 요청되는 서비스를 찾음 Service Provider를 통해 서비스를 바인드
Web Services 오퍼레이션 Publish / Unpublish Service Provider는 그들 서비스의 기능을 하나 또는 복수개의 Service Provider에 전파하거나 서비스 공고를 제거 Find Service Requester는 요구되는 솔루션을 제공하는 서비스와 인터랙션할 수 있는 서비스 세트를 찾기 위해 Service Broker를 검색함 Bind Service Requester는 요구되는 서비스를 사용하기 위해 Service Provider와 협상함
Web Services 베이스 기술 SOAP(Simple Object Access Protocol) Communication 주어진 기능을 수행하기 위해 서버상의 메쏘드를 시작하는 XML 프로토콜 Service Requester는 요청 메시지를 보냄 Service Provider는 응답 메시지를 보냄 UDDI(Universal Description, Discovery, Integration) 서비스 검색 UDDI 서버는 사용가능한 서비스와 Service Provider의 디렉토리로서의 역할 SOAP은 Service를 찾고 사용하기 위해 UDDI를 사용할 수 있슴 WSDL(Web Services Description Language) 서비스 설명 서비스 인터페이스를 설명하는 XML Vocaburary
Web Services 인프라 Service Broker Service Provider Service Requester
Web Services 기반기술 요약
UDDI & SOAP & WSDL WSDL로 작성된 Web Service 정보를 SOAP 프로토콜을 사용하여 UDDI Registry에 등록 Web Service 이용자는 SOAP을 이용하여 UDDI Registry에 등록되어 있는 WSDL 정보를 검색하여 원하는 Web Service를 찾음 발견된 Web Service와 SOAP을 통해 Binding하고 통합되어 서비스 제공 사용자가 UDDI 등록 요청을 전송할때 SAOP 프로토콜을 사용함 HTTP 서버는 HTTP 프로토콜을 사용한 SOAP 메시지를 SOAP 서버에 전송함 SOAP 서버는 UDDI 요청을 가지고 레지스트리에서 서비스를 등록 UDDI Response를 SOAP을 사용하여 전송
SOAP SOAP은 XML 형태의 메시지를 HTTP 프로토콜(또는 다른 프로토콜)을 사용해서 전송함 SOAP은 완전히 Vender-Neutral SOAP은 어떠한 개발 언어, 오브젝트 모델, 운영체제 또는 플랫폼에서 사용 가능 SOAP은 3 부분으로 이루어 짐 SOAP envelope – 메지시가 무엇이고 어떤 서비스와 인터랙션하고 필수적인지 아니면 선택적인지를 정의하는 구조 SOAP encoding Rule – 어플리케이션에서 정의된 데이터 타입의 인스턴스를 교환하는데 사용되는 Serialization Mechanism을 정의 SOAP RPC representation – RPC 와 응답을 나타내기 위해 사용되는 합의사항
UDDI Web Services를 위한 상호운용성과 적용성을 가속화 하기 위한 표준 웹 기반의 비즈니스 레지스트리의 공유된 오퍼레이션 70개 이상의 회사가 참여 비즈니스와 서비스에 대한 정보를 포함하고 있는 디렉토리의 집합 서비스의 설명과 검색을 위한 표준기반의 스펙 세트 비즈니스와 서비스에 대한 정보를 설명하는 문서 세트를 정의하는 XML Schema 디렉토리에 정보를 공개하고 검색하기 위한 일반 API 세트 대등한 UDDI 노드 사이의 Replication 위한 API
WSDL CORBA의 IDL과 유사한 기능을 하는 XML Vocabulary 서비스에 대한 오페레이션 정보 서비스 인터페이스 수행 기능의 자세한 정보 엑세스 프로토콜 Contact endpoint WSDL은 IBM의 NASSL과 MS의 SDL가 결합된 것임
Web Services의 이점 - 요약 상호운용성을 향상 낮은 진입장벽 just-in-time 통합 캡슐화에 의한 복잡성 감소 디자인시 서비스가 호출되고 실행되는 메커니즘에 대한 부분을 고려하지 않아도 되기 때문에 시스템 복잡성은 감소함. 유연성과 확장성 – 동일 형태의 서비스의 다른 수행방식 또는 복수개의 동일 서비스의 수행이 실행시에 가능함. 리거시 어플리케이션과의 상호운용성을 증대 리거시 어플리케이션을 WSDL을 사용하여 Web Services로서 Wrapping함.
Web Services Description Language
WSDL - Definitions Definitions: WSDL is an XML-based language used to define Web Services and describe how to access them. WSLD is an XML format for describing network services as a set of endpoints operating on messages containing either document-oriented or procedure-oriented information.
Working of WSDL A client invoking a Web service.
Working of WSDL contd. WSDL terminology used for describing Web services.
Working of WSDL (with Java) contd.
Working of WSDL contd. A client can invoke a web service using SOAP, HTTP GET/POST and MIME. WSDL Document Structure <definition> Root element <types> Provides data type definitions <message> Represents the abstract definition of the data being transmitted <portType> Defines a set of abstract operations <binding> Specifies concrete protocol and data format specifications for the operations and messages defined by a particular portType <port> Specifies an address for a binding <service> Used to aggregate a set of related ports.
Namespace The XML namespace prefix are used to indicate the namespace of the element being defined All WSDL elements belong to the WSDL namespace, defined as http://schemas.xmlsoap.org/wsdl/ For WSDL SOAP binding, http://schemas.xmlsoap.org/wsdl/soap/ For WSDL HTTP GET and POST binding, http://schemas.xmlsoap.org/wsdl/http/ For WSDL MIME binding, http://schemas.xmlsoap.org/wsdl/mime/
Service Description in WSDL Service implementation definition describes how a particular service interface is implemented by given service provider Service interface definition abstract or reusable service definition can be referenced by multiple service implementation definitions convergence of IBM’s NASSL, CORBA’s IDL, MS’s SDL
WSDL Element Relationships
<definition> </definition> <types> definition of Types…. </types> <message> definitions of messages… </message> <portType> definitions of portTypes… <binding> definitions of bindings… </binding> <service> definition of Services…. </service> </definition>
Types Defines the data types that are used by the web service. For Example, we can write following C structure definition, typedef struct { string Name; int Age; } PERSON;
As, <types> <xsd:complexType name="PERSON"> <xsd:sequence> <xsd:element name="Name" type="xsd:string"/> <xsd:element name="Age" type="xsd:int"/> </xsd:sequence> </xsd:complexType> </types>
Message Defines the data element in an operation. For Example, to construct input, output message for following c construct, int get_id ( string firstname, int age)
We can write it as, <message name=“InputParameters”> < part name=“firstname” type=“xsd:string” /> < part name=“age” type=“xsd:int” /> </message> <message name=“OutputParameters”> < part name=“id” type=“xsd:int />
Operation Abstract description of the operation supported by services. For example, following C definition int get_id(string firstname, int age) Can be written as, <operation name=“get_id” parameterOrder=“firstname age”/ > <input name=“function_input” message=“InputParameters/> <output name=“function_output” message=“OutputParameters”/> </operation>
Operation (Contd..) Operation Types 1, One-Way 2, Request-Response 3, Solicit-Response 4, Notification
Port Type Port Type is a set of abstract operation and abstract messages involved. <portType name=“record”> <operation name=“get_id” parameterOrder=“firstname age” /> <input name=“function_input” message=“InputParameters/> <output name=“function_output” message=“OutputParameters”/> </operation> </portType>
Bindings A binding defines message format and protocol details for operations and messages. The Binding section concretizes the abstractions made in the early sections.
<binding name="Binding1" type="record"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name = "get_id"> <soap:operation soapAction="http://example.com/get_id"/> <input> <soap:body use="literal"/> </input> <output> </output> </operation> </binding>
Port The port defines the connection point to a web service. Each port associates a location with a binding in a one-to-one fashion A port must not specify more than one address. A port must not specify any binding information other than address information.
Service A service is a set of <port> elements. <service name="Service1"> <port name="Port1" binding="Binding1"> <soap:address location="http://mysite/Service1/my.asp"/> </port> </service>