영어로 읽기

다음을 통해 공유


계약

서비스 계약은 서비스에서 채널 메시지를 처리하는 방법을 정의하는 메타데이터를 전달합니다.

WS_SERVICE_CONTRACT WS_MESSAGE 처리하는 서비스에 대한 메타데이터를 전달합니다.

Diagram showing WS_SERVICE_CONTRACT metadata in a message to a service endpoint.

WS_CONTRACT_DESCRIPTION 함수 테이블이 있습니다. 애플리케이션은 필요에 따라 WS_SERVICE_MESSAGE_RECEIVE_CALLBACK 지정할 수 있습니다.

WS_CONTRACT_DESCRIPTION 및 함수 테이블이 지정되지 않은 경우 애플리케이션은 WS_SERVICE_MESSAGE_RECEIVE_CALLBACK 지정해야 합니다.

Diagram showing the Add and Subtract service operations in the ICalculator service contract.

static WS_SERVICE_CONTRACT calculatorContract = 
{
    &calculatorContractDescription, 
    NULL, 
    &calculatorFunctions, 
};

자세한 내용은 계산기 예제를 참조하세요.

계약 설명

WS_CONTRACT_DESCRIPTION 서비스의 형식 계약을 정의하는 메타데이터입니다. wsutil.exe에 의해 생성됩니다.

WSDL 의 관점에서 WS_CONTRACT_DESCRIPTION wsdl:portType에 매핑됩니다. WSDL 문서의 각 wsdl:portType에 대해 별도의 WS_CONTRACT_DESCRIPTION 생성됩니다.

계약 설명은 하나 이상의 서비스 작업으로 구성됩니다. 이러한 작업은 WS_OPERATION_DESCRIPTION 배열로 제공됩니다.

Diagram showing a WS_CONTRACT_DESCRIPTION as an array of WS_OPERATION_DESCRIPTIONs.

<wsdl:definitions xmlns:soap="https://schemas.xmlsoap.org/wsdl/soap/" 
xmlns:wsu="https://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
xmlns:soapenc="https://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="https://Example.org" 
xmlns:wsa="https://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsp="https://schemas.xmlsoap.org/ws/2004/09/policy" 
xmlns:wsap="https://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:xsd="https://www.w3.org/2001/XMLSchema" 
xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsaw="https://www.w3.org/2006/05/addressing/wsdl" 
xmlns:soap12="https://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa10="https://www.w3.org/2005/08/addressing" 
xmlns:wsx="https://schemas.xmlsoap.org/ws/2004/09/mex" targetNamespace="https://Example.org" 
xmlns:wsdl="https://schemas.xmlsoap.org/wsdl/">
 <wsdl:portType name="ICalculator">
  <wsdl:operation name="Add">
   <wsdl:input wsaw:Action="https://Example.org/ICalculator/Add" 
   message="tns:ICalculator_Add_InputMessage" />
   <wsdl:output wsaw:Action="https://Example.org/ICalculator/AddResponse" 
   message="tns:ICalculator_Add_OutputMessage" />
  </wsdl:operation>
 </wsdl:portType>
</wsdl:definitions>

wsdl:portType에서 WS_CONTRACT_DESCRIPTION 변환에 대한 자세한 내용은 WSDL 출력 섹션을 참조하세요.

예: WS_CONTRACT_DESCRIPTION

static WS_CONTRACT_DESCRIPTION contractDescriptionICalculator =
{
    WsCountOf(serviceOperationsICalculator),
    serviceOperationsICalculator
};

함수 테이블

함수 테이블은 서비스 계약의 각 서비스 작업을 나타내는 함수 포인터의 구조체입니다. 함수 테이블 정의도 wsutil.exe에 의해 생성됩니다.

예: 함수 테이블

 // Function Table
struct CalculatorServiceFunctionTable
{
      AddOperation Add;
      SubtractOperation Subtract;
};

// Populate the Function Table
static const CalculatorServiceFunctionTable calculatorFunctions = {Add, Subtract};

WS_SERVICE_MESSAGE_RECEIVE_CALLBACK 사용

WS_SERVICE_MESSAGE_RECEIVE_CALLBACK 이중 상호 배타적 역할을 맡습니다.

WS_SERVICE_CONTRACT WS_CONTRACT_DESCRIPTION 지정하면 지정된 WS_CONTRACT_DESCRIPTION 지원되지 않는 모든 작업에 대한 기본 메시지 처리기가 됩니다. 그렇지 않은 경우 WS_CONTRACT_DESCRIPTION WS_SERVICE_CONTRACT 지정되지 않은 경우 WS_SERVICE_MESSAGE_RECEIVE_CALLBACK WS_SERVICE_CONTRACT 모든 들어오는 메시지가 이 콜백에 전달됩니다.

자세한 예제는 다음을 참조하세요.

다음 콜백은 계약의 일부입니다.

다음 구조는 계약의 일부입니다.