Bindings Cheat Sheet
The four bindings used in the overwhelming majority of real deployments are basicHttpBinding (SOAP 1.1 over HTTP, for maximum interoperability with older clients including legacy ASMX consumers), wsHttpBinding (SOAP 1.2 with WS-Security, WS-ReliableMessaging, and transactions, for secure interoperable web services), netTcpBinding (fast binary encoding over raw TCP, for .NET-to-.NET communication within a trusted network), and netNamedPipeBinding (binary encoding over named pipes, for same-machine inter-process communication with the lowest possible latency). Choosing the wrong binding is the single most common WCF misconfiguration: using wsHttpBinding when only .NET clients on the same LAN ever connect adds unnecessary SOAP overhead, while using basicHttpBinding when WS-Security is required leaves the service without proper message-level protection.
Cricket analogy: Picking the right binding is like choosing the right bowling attack for the pitch, a spin-heavy attack (netTcpBinding) suits a dry, trusted home pitch, while a balanced pace-and-spin attack (wsHttpBinding) suits an unpredictable overseas tour against varied opposition.
Contracts and Attributes
The essential attribute set every developer needs memorized: [ServiceContract] on an interface (optionally with a Namespace property to avoid the default tempuri.org), [OperationContract] on each method meant to be callable remotely (methods without it are invisible to clients), [DataContract] on classes passed as parameters or return values (with an optional IsReference for circular object graphs), and [DataMember] on each field or property that should actually be serialized, with an optional Order property to control serialization sequence when strict ordering matters for interoperability with non-.NET clients. A subtlety worth remembering is that without [DataContract]/[DataMember], WCF falls back to the more permissive DataContractSerializer's implicit serialization of all public read/write properties, which works but gives less control over the wire format.
Cricket analogy: Forgetting [OperationContract] on a method is like a player who trains hard but was never named in the official squad list, no matter how good they are, they simply don't take the field.
Hosting and Configuration Essentials
WCF services can be self-hosted in a console app or Windows Service using ServiceHost, hosted in IIS as a .svc file with ASP.NET compatibility, or hosted via Windows Activation Service (WAS) which additionally enables non-HTTP bindings like netTcpBinding inside IIS. Configuration lives in <system.serviceModel> in app.config/web.config with three key sub-sections: <services> (which contract each service class implements and which endpoints it exposes), <bindings> (named binding configurations with custom timeouts, message sizes, and security settings), and <behaviors> (cross-cutting settings like serviceMetadata for MEX/WSDL exposure and serviceDebug for detailed fault information during development, which must be disabled in production to avoid leaking stack traces).
Cricket analogy: Choosing ServiceHost self-hosting versus IIS hosting is like choosing to organize a match on a private club ground you fully control versus renting a stadium with its own facilities and staff already in place.
<system.serviceModel>
<services>
<service name="Contoso.OrderService">
<endpoint address="" binding="wsHttpBinding"
contract="Contoso.IOrderService" />
<endpoint address="mex" binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>Never leave includeExceptionDetailInFaults="true" set in a production behavior configuration. It returns full .NET stack traces to any client that triggers an unhandled exception, exposing internal implementation details and a significant information-disclosure risk.
- The four common bindings: basicHttpBinding (max interoperability), wsHttpBinding (secure/WS-*), netTcpBinding (fast .NET-to-.NET), netNamedPipeBinding (same-machine IPC).
- [ServiceContract] and [OperationContract] control what's exposed; methods without [OperationContract] are invisible to clients.
- [DataContract] and [DataMember] control serialization shape; without them, WCF implicitly serializes all public read/write properties.
- Hosting options: self-hosted ServiceHost, IIS with a .svc file, or WAS for non-HTTP bindings inside IIS.
- <system.serviceModel> has three key sections: <services>, <bindings>, and <behaviors>.
- serviceMetadata exposes WSDL/MEX for proxy generation; serviceDebug exposes detailed fault info and must be off in production.
- Picking the wrong binding is the most common WCF misconfiguration: mismatched security needs or unnecessary protocol overhead.
Practice what you learned
1. Which binding is best suited for fast .NET-to-.NET communication within a trusted network?
2. What happens to a public method on a WCF service class that lacks [OperationContract]?
3. What must be disabled in production to prevent leaking .NET stack traces to clients?
4. Which hosting option is required to expose non-HTTP bindings like netTcpBinding from within IIS?
5. What is the fallback serialization behavior if a class lacks [DataContract]/[DataMember] attributes?
Was this page helpful?
You May Also Like
WCF Interview Questions
Commonly asked WCF interview questions covering ABC fundamentals, bindings, contracts, instancing, and troubleshooting, with explained answers.
WCF vs gRPC
A technical comparison of WCF's SOAP-based service model against gRPC's HTTP/2 and Protocol Buffers approach, and when to choose each.
Consuming WCF Services
How .NET client applications discover, generate proxies for, and call WCF services reliably, including channel lifecycle and fault handling.
Related Reading
Related Study Notes in Microsoft Technologies
Browse all study notesWindows 10 / UWP Development Study Notes
.NET · 30 topics
Microsoft TechnologiesWindows Batch Scripting Study Notes
Batch · 30 topics
Microsoft TechnologiesMFC (Microsoft Foundation Classes) Study Notes
C++ · 30 topics
Microsoft TechnologiesSilverlight Study Notes
.NET · 30 topics
Microsoft TechnologiesXAML Study Notes
.NET · 30 topics
Microsoft TechnologiesWPF (Windows Presentation Foundation) Study Notes
.NET · 30 topics