4장. 논리 인터페이스 정의
초록
논리 서비스 인터페이스는 portType
요소를 사용하여 정의됩니다.
4.1. 개요
논리 서비스 인터페이스는 WSDL portType
요소를 사용하여 정의됩니다. portType
요소는 추상 작업 정의 컬렉션입니다. 각 작업은 작업이 나타내는 트랜잭션을 완료하는 데 사용되는 입력, 출력 및 오류 메시지에 의해 정의됩니다. portType
요소에서 정의한 서비스 인터페이스를 구현하기 위해 코드가 생성되면 각 작업은 계약에 지정된 입력, 출력 및 오류 메시지에 정의된 매개 변수를 포함하는 메서드로 변환됩니다.
4.2. 프로세스
WSDL 계약에 논리 인터페이스를 정의하려면 다음을 수행해야 합니다.
4.3. 포트 유형
WSDL portType
요소는 논리 인터페이스 정의의 root 요소입니다. 많은 웹 서비스 구현은 portType
요소를 생성된 구현 오브젝트에 직접 매핑하지만 논리 인터페이스 정의는 구현된 서비스에서 제공하는 정확한 기능을 지정하지 않습니다. 예를 들어, ticketSystem이라는 논리 인터페이스는 구현 결과를 초래할 수 있으며, 구현 결과를 얻을 수 있습니다.
portType
요소는 정의된 서비스를 노출하는 끝점에서 사용하는 물리적 데이터를 정의하기 위해 바인딩에 매핑되는 WSDL 문서의 단위입니다.
WSDL 문서의 각 portType
요소에는 name
특성을 사용하여 지정되고 작업 요소에 설명된 작업
컬렉션으로 구성된 고유한 이름이 있어야 합니다. WSDL 문서는 임의의 수의 포트 유형을 설명할 수 있습니다.
4.4. 작업
WSDL 작업 요소를 사용하여 정의된 논리 작업은
두 끝점 간의 상호 작용을 정의합니다. 예를 들어, 계정 밸런스 확인 요청과 위젯의 Gross에 대한 주문은 둘 다 작업으로 정의할 수 있습니다.
portType
요소 내에 정의된 각 작업에는 name 특성을 사용하여 지정된 고유한 이름이
있어야 합니다. name
속성은 작업을 정의하는 데 필요합니다.
4.5. 작업 메시지
논리 작업은 작업을 실행하기 위해 끝점 간에 전달되는 논리 메시지를 나타내는 일련의 요소로 구성됩니다. 작업을 설명할 수 있는 요소는 표 4.1. “작업 메시지 요소” 에 나열됩니다.
element | 설명 |
---|---|
| 요청 시 클라이언트 끝점이 서비스 공급자에게 보내는 메시지를 지정합니다. 이 메시지의 일부는 작업의 입력 매개 변수에 해당합니다. |
| 서비스 공급자가 요청에 대한 응답으로 클라이언트 끝점에 전송하는 메시지를 지정합니다. 이 메시지의 일부는 참조로 전달된 값과 같이 서비스 공급자가 변경할 수 있는 모든 작업 매개변수에 해당합니다. 여기에는 작업의 반환 값이 포함됩니다. |
| 끝점 간 오류 상태를 전달하는 데 사용되는 메시지를 지정합니다. |
입력
또는 하나의 출력
요소를 하나 이상 보유하려면 작업이 필요합니다. 작업에는 input
및 output
요소가 모두 있을 수 있지만 각 요소 중 하나만 있을 수 있습니다. fault
요소가 필요한 것은 아니지만 필요한 경우 여러 fault
요소가 있을 수 있습니다.
요소에는 표 4.2. “입력 및 출력 요소의 속성” 에 나열된 두 가지 속성이 있습니다.
속성 | 설명 |
---|---|
| 작업을 구체적인 데이터 형식으로 매핑할 때 참조할 수 있도록 메시지를 식별합니다. 이름은 enclosing 포트 유형 내에서 고유해야 합니다. |
|
전송 또는 수신 중인 데이터를 설명하는 추상 메시지를 지정합니다. |
모든 입력
및 출력
요소에 대한 name
속성을 지정할 필요는 없습니다. WSDL은 enclosing 작업의 이름을 기반으로 기본 이름 지정 체계를 제공합니다. 작업에 하나의 요소만 사용되는 경우 요소 이름은 기본적으로 작업 이름으로 설정됩니다. 입력
과 출력
요소가 모두 사용되는 경우 요소 이름은 기본적으로 Request
또는 Response
가 이름에 각각 추가된 작업의 이름으로 설정됩니다.
4.6. 반환 값
작업 요소는 작업
중에 전달된 데이터의 추상적 정의이므로 WSDL은 작업에 대해 지정된 반환 값을 제공하지 않습니다. 메서드가 값을 반환하는 경우 해당 메시지의 마지막 부분으로 출력
요소에 매핑됩니다.
4.7. 예
예를 들어 예 4.1. “personalInfo 조회 인터페이스” 에 표시된 인터페이스와 유사한 인터페이스가 있을 수 있습니다.
예 4.1. personalInfo 조회 인터페이스
interface personalInfoLookup { personalInfo lookup(in int empID) raises(idNotFound); }
이 인터페이스는 예 4.2. “personalInfo 조회 포트 유형” 의 포트 유형에 매핑할 수 있습니다.
예 4.2. personalInfo 조회 포트 유형
<message name="personalLookupRequest"> <part name="empId" element="xsd1:personalLookup"/> <message/> <message name="personalLookupResponse"> <part name="return" element="xsd1:personalLookupResponse"/> <message/> <message name="idNotFoundException"> <part name="exception" element="xsd1:idNotFound"/> <message/> <portType name="personalInfoLookup"> <operation name="lookup"> <input name="empID" message="tns:personalLookupRequest"/> <output name="return" message="tns:personalLookupResponse"/> <fault name="exception" message="tns:idNotFoundException"/> </operation> </portType>