UseAndStyle 샘플에서는 XmlSerializerFormatAttribute 및 DataContractFormatAttribute의 사용 및 스타일 속성을 사용하는 방법을 보여 줍니다. 이러한 속성은 메시지의 형식 지정 방식에 영향을 미칩니다. 기본적으로 메시지 본문은 스타일이 로 설정된 형식으로 지정됩니다 Document. 이러한 설정은 서비스 계약 수준 또는 작업 계약 수준에서 지정할 수 있습니다.
비고
이 샘플에 대한 설치 절차 및 빌드 지침은 이 항목의 끝에 있습니다.
스타일 속성은 Style 서비스에 대한 WSDL 메타데이터의 형식을 지정하는 방법을 결정합니다. 가능한 값은 다음과 같습니다DocumentRpc. RPC는 작업에 대해 교환된 메시지의 WSDL 표현에 원격 프로시저 호출인 것처럼 매개 변수가 포함되어 있음을 의미합니다. 다음은 예제입니다.
<wsdl:message name="IUseAndStyleCalculator_Add_InputMessage">
<wsdl:part name="n1" type="xsd:double"/>
<wsdl:part name="n2" type="xsd:double"/>
</wsdl:message>
스타일을 설정하면 Document 다음 예제와 같이 WSDL 표현에 작업에 대해 교환되는 문서를 나타내는 단일 요소가 포함됩니다.
<wsdl:message name="IUseAndStyleCalculator_Add_InputMessage">
<wsdl:part name="parameters" element="tns:Add"/>
</wsdl:message>
속성은 Use 메시지의 형식을 결정합니다. 가능한 값은 다음과 같습니다 Literal . Encoded기본값은 .입니다 Literal. 리터럴은 다음 문서/리터럴 예제와 같이 메시지가 WSDL에 있는 스키마의 리터럴 인스턴스임을 의미합니다.
<Add xmlns="http://Microsoft.ServiceModel.Samples">
<n1>100</n1>
<n2>15.99</n2>
</Add>
인코딩됨은 WSDL의 스키마가 SOAP 1.1 섹션 5에 있는 규칙에 따라 인코딩되는 추상 사양임을 의미합니다. 다음은 RPC/인코딩된 예제입니다.
<q1:Add xmlns:q1="http://Microsoft.ServiceModel.Samples">
<n1 xsi:type="xsd:double" xmlns="">100</n1>
<n2 xsi:type="xsd:double" xmlns="">15.99</n2>
</q1:Add>
WS-I 기본 프로필 1.0은 Encoded 사용을 금지하며, 레거시 서비스에서 요구할 경우에만 사용해야 합니다. 메시지 형식은 Encoded XmlSerializer를 사용하는 경우에만 사용할 수 있습니다.
보내고 받는 메시지를 볼 수 있도록 이 샘플은 추적 및 메시지 로깅을 기반으로 합니다. 추적 및 메시지 로깅을 사용하도록 서비스 구성 및 소스 코드가 수정되었습니다. 또한 WSHttpBinding 보안 없이 구성되었으므로 기록된 메시지를 암호화되지 않은 형식으로 볼 수 있습니다. 결과 추적 로그(System.ServiceModel.e2e 및 Message.log)는 서비스 추적 뷰어 도구(SvcTraceViewer.exe)를 사용하여 확인해야 합니다. 추적은 C:\LOGS 폴더에 만들도록 구성됩니다. 샘플을 실행하기 전에 폴더를 만듭니다. 추적 뷰어 도구에서 메시지 내용을 보려면 도구의 왼쪽 창과 오른쪽 창 모두에서 메시지를 선택합니다.
다음 코드는 Use 속성이 OperationFormatUse 로 설정된 서비스 계약을 보여주며, 메시지 본문의 형식이 기본값인 OperationFormatStyle에서 Document로 변경된 것을 보여줍니다.
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples"),
XmlSerializerFormat(Style = OperationFormatStyle.Rpc,
Use = OperationFormatUse.Encoded)]
public interface IUseAndStyleCalculator
{
[OperationContract]
double Add(double n1, double n2);
[OperationContract]
double Subtract(double n1, double n2);
[OperationContract]
double Multiply(double n1, double n2);
[OperationContract]
double Divide(double n1, double n2);
}
서로 다른 Use 및 Style 설정의 차이점을 확인하려면, 서비스에서 수정하고, 클라이언트를 다시 생성하고, 샘플을 실행한 후, Service Trace Viewer 도구를 사용하여 c:\logs\message.logs 파일을 검사합니다. 또한 http://localhost/ServiceModelSamples/service.svc?wsdl를 확인하여 메타데이터에 미치는 영향을 관찰합니다. 서비스에 대한 메타데이터는 일반적으로 여러 페이지로 나뉩니다. 기본 wsdl 페이지에는 WSDL 바인딩이 포함되어 있지만, 메시지 정의를 확인하려면 http://localhost/ServiceModelSamples/service.svc?wsdl=wsdl0를 보십시오.
샘플을 설정, 빌드 및 실행하려면
Windows Communication Foundation 샘플 에 대한One-Time 설정 절차를 수행했는지 확인합니다.
메시지를 로깅하기 위한 C:\LOGS 디렉터리를 만듭니다. 사용자에게 이 디렉터리에 대한 네트워크 서비스 쓰기 권한을 부여합니다.
솔루션의 C# 또는 Visual Basic .NET 버전을 빌드하려면 Windows Communication Foundation 샘플빌드의 지침을 따릅니다.
단일 또는 컴퓨터 간 구성에서 샘플을 실행하려면 Windows Communication Foundation 샘플실행의 지침을 따릅니다.