계약
서비스 계약은 서비스에서 채널 메시지를 처리하는 방법을 정의하는 메타데이터를 전달합니다.
WS_SERVICE_CONTRACT WS_MESSAGE 처리하는 서비스에 대한 메타데이터를 전달합니다.
WS_CONTRACT_DESCRIPTION 함수 테이블이 있습니다. 애플리케이션은 필요에 따라 WS_SERVICE_MESSAGE_RECEIVE_CALLBACK 지정할 수 있습니다.
WS_CONTRACT_DESCRIPTION 및 함수 테이블이 지정되지 않은 경우 애플리케이션은 WS_SERVICE_MESSAGE_RECEIVE_CALLBACK 지정해야 합니다.
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 배열로 제공됩니다.
<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 출력 섹션을 참조하세요.
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 모든 들어오는 메시지가 이 콜백에 전달됩니다.
자세한 예제는 다음을 참조하세요.
다음 콜백은 계약의 일부입니다.
다음 구조는 계약의 일부입니다.