WCF to ASP.NET Core Web API
At the //BUILD 2019 conference, Microsoft announced that after .NET Core 3.0 the path forward for .NET Framework and .NET Core would be together - and the next major release would be called .NET 5. But .NET 5 will be the evolution of .NET Core, not .NET Framework.
Windows Communication Foundation (WCF) is one part of the .NET Framework that is not being ported to .NET Core and won’t be available in .NET 5. Even if it was ported to .NET Core, would it be the right answer for your team?
WCF was originally released as part of .NET Framework 3.0 at the end of 2006. The world of distributed systems was very different then: JSON was barely a thing, and Remote Procedure Calls (RPC) using XML-serialized SOAP messages was the prevailing standard for Service Oriented Architectures. The term “microservices” would not be coined for another five years. And technology moves forward ever-faster, so in the years since WCF was conceived, people have come up with better solutions to the problems it sought to solve.
Where does that leave you and many others that have a deep investment in WCF for building your critical applications?
ReCode from WCF to Web API
If you want to migrate to a modern micro-services approach you can convert your WCF applications to use
a native HTTP API - built with ASP.NET Core. Visual ReCode will guide you through creating a new
.NET Core 3.0 Web API Project and then automatically copy and rewrite your existing
ServiceContract types and implementations
into ASP.NET Core Web API Controllers.
Of course, just converting the controllers doesn’t cover all your application does - so ReCode will also
create POCO data transfer objects from
DataContract types and identify and copy dependencies from your
WCF project(s) to .NET Core 3.0 project(s). You can chose to merge or split your service contracts between
multiple projects to optimize how you want your final application code structure to be.
Keep Existing URLs
To make it easier to migrate your application component-by-component, ReCode works with the WCF REST
WebInvoke attribute to maintain existing URIs.
Add OpenAPI metadata
HTTP APIs aren’t documented in the same way WCF SOAP APIs are; there’s no
WSDL metadata for generating
client code. The modern alternative to this is OpenAPI
(formerly known as “Swagger”), which provides interactive documentation of your APIs in the browser and
supports client code generation across multiple platforms. Visual ReCode can automatically add the necessary
code to support OpenAPI as it migrates your WCF application to ASP.NET Core Web API.
Fast, Native Implementation
Visual ReCode works by moving your source code from a .NET Framework project to a new .NET Core project and rewriting it as a native ASP.NET Core Web API. It doesn’t add any proprietary third party libraries - instead it creates the same code you would make yourself if you were starting from scratch today.
Once you’ve ReCoded your application you don’t need Visual ReCode around to compile it, modify it, or deploy - because everything’s using the native .NET Core implementations just like a brand new implementation.