WCF-서비스 바인딩
WCF 서비스 바인딩은 각 요소가 서비스가 클라이언트와 통신하는 방식을 정의하는 여러 요소의 집합입니다. 전송 요소와 메시지 인코딩 요소는 각 바인딩에서 가장 중요한 두 가지 구성 요소입니다. 이 장에서는 일반적으로 사용되는 다양한 WCF 서비스 바인딩에 대해 설명합니다.
기본 바인딩
기본 바인딩은 BasicHttpBinding 클래스에서 제공합니다. HTTP 프로토콜을 사용하여 WCF 서비스를 ASP.NET 웹 서비스 (ASMX 웹 서비스)로 전송하고 나타내므로 ASMX 웹 서비스를 사용하는 이전 클라이언트가 새 서비스를 편리하게 사용할 수 있습니다.
기본 바인딩은 Silverlight에서 사용하는 WCF 웹 서비스에서 기본 바인딩으로 설정되며 웹 서비스 스타일의 통신을위한 표준 바인딩입니다. 신뢰할 수있는 메시징을 지원하지 않습니다.
다음은 기본 바인딩의 기본 설정을 설명하는 코드 스 니펫입니다.
<basicHttpBinding>
<binding name = "basicHttpBindingDefaults" allowCookies = "false"
bypassProxyOnLocal = "false" hostNameComparisonMode = "StrongWildcard"
maxBufferPoolSize = "524288" maxBufferSize = "65536"
maxReceivedMessageSize = "65536" messageEncoding = "Text" proxyAddress = ""
textEncoding = "utf-8" transferMode = "Buffer" useDefaultWebProxy = "true"
closeTimeout = "00:01:00" openTimeout = "00:01:00" receiveTimeout = "00:10:00"
sendTimeout = "00:01:00">
<readerQuotas maxArrayLength = "16384" maxBytesPerRead = "4096"
maxDepth = "32"
maxNameTableCharCount = "16384" maxStringContentLength = "8192"/>
<security mode = "None">
<transport clientCredentialType = "None" proxyCredentialType = "None" realm = ""/>
<message algorithmSuite = "Basic256" clientCredentialType = "UserName" />
</security>
</binding>
</basicHttpBinding>
위의 기본 설정에는 메시지 크기가 제한되고 보안 모드가 없기 때문에 명백한 제한이 있습니다. 그러나 기본 바인딩을 사용자 정의하면 다음과 같은 문제가 해결됩니다.
<basicHttpBinding>
<binding name = "basicHttpSecure" maxBufferSize = "100000" maxReceivedMessageSize = "100000">
<readerQuotas maxArrayLength = "100000" maxStringContentLength = "100000"/>
<security mode = "TransportWithMessageCredential" />
</binding>
</basicHttpBinding>
웹 서비스 바인딩
WS (Web Service) 바인딩은 WSHttpBinding 클래스에서 제공합니다. 기본 바인딩과 매우 유사하며 전송에 동일한 프로토콜을 사용하지만 WS–Reliable Messaging, WS–Transactions, WS–Security 등과 같은 여러 WS– * 사양을 제공합니다. 간단히 말해서 WSHttpBinding은 basicHttpBinding 및 WS– * 사양의 합계와 같습니다. 다음은 WS Binding의 기본 설정을 설명하는 코드 스 니펫입니다.
<wsHttpBinding>
<binding name = "wsHttpBindingDefaults" allowCookies = "false"
bypassProxyOnLocal = "false" closeTimeout = "00:01:00"
hostNameComparisonMode = "StrongWildcard"
maxBufferPoolSize = "524288" maxReceivedMessageSize = "65536"
messageEncoding = "Text" openTimeout = "00:01:00"
receiveTimeout = "00:10:00" proxyAddress = "" sendTimeout = "00:01:00"
textEncoding = "utf-8" transactionFlow = "false"
useDefaultWebProxy = "true" >
<readerQuotas maxArrayLength = "16384" maxBytesPerRead = ."4096"
maxDepth = "32" maxNameTableCharCount = "16384"
maxStringContentLength = "8192"/>
<reliableSession enabled = "false" ordered = "true"
inactivityTimeout = "oo:10:00" />
<security mode = "Message">
<message algorithmSuite = "Basic256" clientCredentialType = "Windows"
esatalishSecurityContext = "true"
negotiateServiceCredential = "true" />
<transport clientCredentialType = "Windows"
proxyCredentialType = "None" realm = ""/>
</security>
</binding>
</wsHttpBinding>
IPC 바인딩
IPC 바인딩은 명명 된 파이프를 사용하며 netNamedPipeBinding 클래스에서 제공합니다. 이것은 사용 가능한 모든 바인딩 중에서 가장 빠르고 가장 안전한 바인딩입니다. 여기에서는 메시지 수준 보안이 지원되지 않지만 강력한 전송 보안으로 인해 기본적으로 메시지가 안전합니다. 다음은 IPC 바인딩의 기본 설정을 설명하는 코드 스 니펫입니다.
<netNamedPipeBinding>
<binding name = "netPipeDefaults" closeTimeout = "00:01:00"
hostNameComparisonMode = "StrongWildcard" maxBufferPoolSize = "524288"
maxBufferSize = "65536" maxConnections = "10"
maxReceivedMessageSize = "65536" openTimeout = "00:01:00"
receiveTimeout = "00:10:00" sendTimeout = "00:01:00" transactionFlow = "false"
transactionProtocol = "OleTransactions" transferMode = "Buffered">
<readerQuotas maxArrayLength = "16384" maxBytesPerRead = "4096"
maxDepth = "32" maxNameTableCharCount = "16384"
maxStringContentLength = "8192"/>
<security mode = "Transport">
</security>
</binding>
</netNamedPipeBinding>
다른 유형의 서비스 바인딩
TCP Binding− NetTCPBinding 클래스에서 제공하는이 바인딩은 동일한 네트워크 내 통신을 위해 TCP 프로토콜을 사용하고 바이너리 형식으로 메시지 인코딩을 수행합니다. 이 바인딩은 다른 바인딩에 비해 가장 신뢰할 수있는 것으로 간주됩니다.
WS Dual Binding−이 유형의 바인딩은 양방향 통신을 용이하게하는 유일한 예외를 제외하면 WSHttpBinding과 비슷합니다. 즉, 클라이언트와 서비스 모두에서 메시지를 보내고받을 수 있습니다. WSDualHttpBinding 클래스에서 제공합니다.
Web binding − 웹 바인딩은 HTTP-GET, HTTP-POST 등을 사용하여 HTTP 요청 형태로 WCF 서비스를 표현하도록 설계되었습니다. WebHttpBinding 클래스에서 제공하며 소셜 네트워크에서 일반적으로 사용됩니다.
MSMQ Binding− NetMsmqBinding 클래스에서 제공하며 서비스가 클라이언트가 보낸 시간과 다른 시간에 메시지를 처리하는 경우 솔루션을 제공하는 데 사용됩니다. MSMQ 바인딩은 MSMQ를 전송에 사용하고 대기중인 분리 된 메시지를 지원합니다. MSMQ는 Microsoft에서 제공하는 메시지 큐에 대한 구현입니다.
Federated WS Binding− WS 바인딩의 특정 형태이며 연합 보안을 지원합니다. WSFederationHttpBinding 클래스에서 제공합니다.
Peer Network Binding− NetPeerTCPBinding 클래스에서 제공하며 주로 파일 공유 시스템에서 사용됩니다. TCP 프로토콜을 사용하지만 피어 네트워킹을 전송으로 사용합니다. 이 네트워킹에서 각 시스템 (노드)은 다른 노드에 대한 클라이언트 및 서버 역할을합니다. 피어 네트워크 바인딩은 토렌트와 같은 파일 공유 시스템에서 사용됩니다.
MSMQ Integration Binding − MsmqIntegrationBinding 클래스에서 제공하며 MSMQ (Microsoft Message Queuing)를 통해 통신하는 기존 시스템과의 통신을 지원합니다.
이 외에도 사용자 지정 바인딩을 만들 수도 있습니다. 그러나 각 WCF 바인딩의 구성 속성을 조정할 수 있으므로 사용자 지정 바인딩을 만들어야하는 필요성이 거의 발생하지 않습니다.