Overview: Two Generations of RPC on .NET
WCF, introduced in .NET Framework 3.0, was Microsoft's unifying answer to building service-oriented applications across HTTP, TCP, named pipes, and MSMQ transports using a config-driven binding model and SOAP or binary XML message formats. gRPC, by contrast, is a CNCF project originating at Google that Microsoft adopted as the strategic RPC framework for .NET Core and .NET 5+, built on HTTP/2 multiplexed streams and Protocol Buffers binary serialization, with first-class support in ASP.NET Core via Grpc.AspNetCore.
Cricket analogy: WCF is like Test cricket, a format built over decades with layered rules for every situation, while gRPC is like T20, a leaner, faster format designed for a specific modern need with fewer but more efficient rules.
Protocol, Serialization, and Streaming
WCF's default bindings like wsHttpBinding and basicHttpBinding serialize messages as verbose SOAP/XML envelopes over HTTP 1.1, while netTcpBinding uses a compact proprietary binary format over raw TCP; either way, WCF's streaming support is limited to a single unidirectional Stream parameter and lacks true bidirectional streaming. gRPC always uses Protocol Buffers, a compact schema-first binary format defined in .proto files, transmitted over HTTP/2, which natively supports four call types: unary, server-streaming, client-streaming, and full bidirectional streaming multiplexed over a single connection.
Cricket analogy: SOAP-over-HTTP is like a lengthy post-match press conference covering every detail verbosely, while Protocol Buffers is like a crisp scorecard SMS update, dense and information-efficient.
Interoperability, Tooling, and Platform Support
WCF's WSDL-based contracts and SOAP standards (WS-Security, WS-ReliableMessaging, WS-AtomicTransaction) give it strong interoperability with legacy enterprise systems, Java/JAX-WS services, and older middleware, but WCF itself only runs fully on .NET Framework; .NET Core/.NET 5+ support is limited to CoreWCF, a community-maintained server-side subset with no full WS-* stack. gRPC ships as a first-class, cross-platform framework with code generation for over ten languages via protoc, native support in ASP.NET Core, and is the framework Microsoft now recommends for new .NET service-to-service communication, though it lacks WCF's decades of enterprise WS-* interoperability tooling.
Cricket analogy: WCF's WS-* standards are like the traditional MCC Laws of Cricket recognized by every cricketing nation for decades, while gRPC is like a newer global T20 league format still building out that same universal recognition.
// order.proto - gRPC service definition
syntax = "proto3";
service OrderService {
rpc GetOrder (GetOrderRequest) returns (OrderReply);
rpc StreamOrderUpdates (GetOrderRequest) returns (stream OrderReply);
}
message GetOrderRequest {
int32 order_id = 1;
}
message OrderReply {
int32 order_id = 1;
double total = 2;
string status = 3;
}Microsoft's official .NET guidance since .NET Core 3.0 is to use gRPC or ASP.NET Core Web API (REST) for new services; WCF-style SOAP is considered legacy and CoreWCF exists primarily to help migrate existing WCF servers off .NET Framework, not to build new SOAP services.
- WCF uses config-driven bindings (basicHttp, wsHttp, netTcp) with SOAP/XML or proprietary binary serialization.
- gRPC always uses Protocol Buffers over HTTP/2, giving smaller payloads and lower latency.
- gRPC natively supports unary, server-streaming, client-streaming, and bidirectional streaming; WCF only supports a single unidirectional Stream parameter.
- WCF's WS-* stack (WS-Security, WS-ReliableMessaging, WS-AtomicTransaction) gives strong legacy enterprise interoperability that gRPC does not replicate.
- Full WCF runs only on .NET Framework; .NET Core/.NET 5+ has only CoreWCF, a partial community-maintained server-side subset.
- gRPC has first-class ASP.NET Core support and protoc code generation across 10+ languages.
- Microsoft recommends gRPC or REST for new .NET service-to-service communication, treating WCF as legacy.
Practice what you learned
1. What serialization format does gRPC use by default?
2. Which streaming modes does gRPC support that classic WCF bindings do not?
3. What is CoreWCF?
4. What transport protocol does gRPC require?
5. Which WCF feature gives it strong legacy enterprise interoperability that gRPC generally lacks?
Was this page helpful?
You May Also Like
Migrating WCF to Modern Alternatives
Practical strategies for moving existing WCF services off .NET Framework onto CoreWCF, gRPC, or ASP.NET Core Web API.
Consuming WCF Services
How .NET client applications discover, generate proxies for, and call WCF services reliably, including channel lifecycle and fault handling.
WCF Quick Reference
A condensed cheat sheet of WCF bindings, contract attributes, hosting options, and configuration essentials for day-to-day lookup.
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