NamedPipeActivation 샘플은 WAS(Windows Process Activation Service)를 사용하여 명명된 파이프를 통해 통신하는 서비스를 활성화하는 서비스를 호스팅하는 방법을 보여 줍니다. 이 샘플은 시작 에 기반하며 Windows Vista를 실행해야 합니다.
비고
이 샘플에 대한 설정 절차 및 빌드 지침은 이 항목의 끝에 있습니다.
샘플 세부 정보
샘플은 클라이언트 콘솔 프로그램(.exe)과 WAS(Windows Process Activation Services)에서 활성화된 작업자 프로세스에서 호스트되는 서비스 라이브러리(.dll)로 구성됩니다. 클라이언트 작업은 콘솔 창에 표시됩니다.
서비스는 요청-회신 통신 패턴을 정의하는 계약을 구현합니다. 계약은 다음 샘플 코드와 같이 수학 연산(추가, 빼기, 곱하기 및 나누기)을 노출하는 인터페이스에 의해 ICalculator 정의됩니다.
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
public interface ICalculator
{
[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);
}
클라이언트는 지정된 수학 연산에 동기 요청을 하고 서비스 구현은 적절한 결과를 계산하고 반환합니다.
// Service class that implements the service contract.
public class CalculatorService : ICalculator
{
public double Add(double n1, double n2)
{
return n1 + n2;
}
public double Subtract(double n1, double n2)
{
return n1 - n2;
}
public double Multiply(double n1, double n2)
{
return n1 * n2;
}
public double Divide(double n1, double n2)
{
return n1 / n2;
}
}
샘플은 보안 없이 수정된 netNamedPipeBinding 바인딩을 사용합니다. 바인딩은 클라이언트 및 서비스에 대한 구성 파일에 지정됩니다. 서비스에 대한 바인딩 형식은 다음 샘플 구성과 같이 엔드포인트 요소의 binding 특성에 지정됩니다.
명명된 보안 파이프 바인딩을 사용하려면 서버의 보안 모드를 원하는 보안 설정으로 변경하고 클라이언트에서 svcutil.exe 다시 실행하여 업데이트된 클라이언트 구성 파일을 가져옵니다.
<system.serviceModel>
<services>
<service name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<!-- This endpoint is exposed at the base address provided by host: net.pipe://localhost/servicemodelsamples/service.svc -->
<endpoint address=""
binding="netNamedPipeBinding"
bindingConfiguration="Binding1"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
<!-- the mex endpoint is exposed at net.pipe://localhost/servicemodelsamples/service.svc/mex -->
<endpoint address="mex"
binding="mexNamedPipeBinding"
contract="IMetadataExchange" />
</service>
</services>
<bindings>
<netNamedPipeBinding>
<binding name="Binding1" >
<security mode = "None">
</security>
</binding >
</netNamedPipeBinding>
</bindings>
<!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
<behaviors>
<serviceBehaviors>
<behavior name="CalculatorServiceBehavior">
<serviceMetadata />
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
클라이언트의 엔드포인트 정보는 다음 샘플 코드와 같이 구성됩니다.
<system.serviceModel>
<client>
<endpoint name=""
address="net.pipe://localhost/servicemodelsamples/service.svc"
binding="netNamedPipeBinding"
bindingConfiguration="Binding1"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
</client>
<bindings>
<!-- Following is the expanded configuration section for a NetNamedPipeBinding.
Each property is configured with the default value. -->
<netNamedPipeBinding>
<binding name="Binding1"
maxBufferSize="65536"
maxConnections="10">
<security mode = "None">
</security>
</binding >
</netNamedPipeBinding>
</bindings>
</system.serviceModel>
샘플을 실행하면 작업 요청 및 응답이 클라이언트 콘솔 창에 표시됩니다. 클라이언트 창에서 Enter 키를 눌러 클라이언트를 종료합니다.
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714
Press <ENTER> to terminate client.
샘플을 설정, 빌드 및 실행하려면
IIS 7.0이 설치되어 있는지 확인합니다. WAS 활성화에는 IIS 7.0이 필요합니다.
Windows Communication Foundation 샘플에 대한One-Time 설치 프로시저를 수행했는지 확인합니다.
또한 WCF 비 HTTP 활성화 구성 요소를 설치해야 합니다.
시작 메뉴에서 제어판을 선택합니다.
프로그램 및 기능을 선택합니다.
Windows 구성 요소 켜기 또는 끄기를 클릭합니다.
Microsoft .NET Framework 3.0 노드를 확장하고 Windows Communication Foundation 비 HTTP 활성화 기능을 확인합니다.
명명된 파이프 활성화를 지원하도록 WAS(Windows Process Activation Service)를 구성합니다.
편의를 위해 다음 두 단계는 샘플 디렉터리에 있는 AddNetPipeSiteBinding.cmd이라는 일괄 처리 파일에서 구현됩니다.
net.pipe 활성화를 지원하려면 먼저 기본 웹 사이트가 net.pipe 프로토콜에 바인딩되어야 합니다. IIS 7.0 관리 도구 집합과 함께 설치된 appcmd.exe사용하여 이 작업을 수행할 수 있습니다. 높은 권한의 명령 프롬프트에서 다음 명령을 실행합니다.
%windir%\system32\inetsrv\appcmd.exe set site "Default Web Site" -+bindings.[protocol='net.pipe',bindingInformation='*']비고
이 명령은 한 줄의 텍스트입니다.
이 명령은 net.pipe 사이트 바인딩을 기본 웹 사이트에 추가합니다.
사이트 내의 모든 애플리케이션은 공통 net.pipe 바인딩을 공유하지만 각 애플리케이션은 개별적으로 net.pipe 지원을 사용하도록 설정할 수 있습니다. /servicemodelsamples 애플리케이션에 net.pipe를 사용하도록 설정하려면 관리자 권한 명령 프롬프트에서 다음 명령을 실행합니다.
%windir%\system32\inetsrv\appcmd.exe set app "Default Web Site/servicemodelsamples" /enabledProtocols:http,net.pipe비고
이 명령은 한 줄의 텍스트입니다.
이 명령을 사용하면
http://localhost/servicemodelsamples및net.tcp://localhost/servicemodelsamples를 통해 /servicemodelsamples 애플리케이션에 액세스할 수 있습니다.
솔루션의 C# 또는 Visual Basic .NET 버전을 빌드하려면 Windows Communication Foundation 샘플빌드의 지침을 따릅니다.
이 샘플에 대해 추가한 net.pipe 사이트 바인딩을 제거합니다.
편의를 위해 다음 두 단계는 샘플 디렉터리에 있는 RemoveNetPipeSiteBinding.cmd 라는 일괄 처리 파일에서 구현됩니다.
관리자 권한 명령 프롬프트에서 다음 명령을 실행하여 사용하도록 설정된 프로토콜 목록에서 net.tcp를 제거합니다.
%windir%\system32\inetsrv\appcmd.exe set app "Default Web Site/servicemodelsamples" /enabledProtocols:http비고
이 명령은 한 줄의 텍스트로 입력해야 합니다.
관리자 권한 명령 프롬프트에서 다음 명령을 실행하여 net.tcp 사이트 바인딩을 제거합니다.
%windir%\system32\inetsrv\appcmd.exe set site "Default Web Site" --bindings.[protocol='net.pipe',bindingInformation='*']비고
이 명령은 한 줄의 텍스트로 입력해야 합니다.