visualrecode.com
.NET is Dead
Long Live .NET
MARK RENDLE :: CTO, visualrecode.com
@markrendle :: mark@gibraltarsoftware.com
visualrecode.com
.NET Timeline
https://twitter.com/buhakmeh/status/1250127850457440256
visualrecode.com
.NET Frameworks
1.0: Windows Forms
ASP.NET Web Forms
3.0: Windows Presentation Foundation (WPF)
Windows Communication Foundation (WCF)
Windows Workflow (WF)
☹ Silverlight
3.5: ASP.NET MVC
4.0: ASP.NET Web API
visualrecode.com
.NET 5
THE FUTURE IS NOW
visualrecode.com
.NET 5 Unified Platform
Source: Microsoft
visualrecode.com
.NET Frameworks
1.0: Windows Forms
ASP.NET Web Forms
3.0: Windows Presentation Foundation (WPF)
Windows Communication Foundation (WCF)
Windows Workflow (WF)
☹ Silverlight
3.5: ASP.NET MVC -> ASP.NET Core MVC
4.0: ASP.NET WebAPI -> ASP.NET Core MVC
visualrecode.com
How?
GETTING FROM 4 TO 5
visualrecode.com
Microsoft recommends
.NET 4.x .NET 5
ASP.NET Web Forms Blazor
WCF ASP.NET Core gRPC
Workflow Foundation Open-source
Silverlight Blazor
WPF WPF or UWP
Windows Forms Windows Forms or UWP
visualrecode.com
Web Forms -> Blazor?
visualrecode.com
Web Forms -> Blazor
ASP.NET Web Forms
ASPX pages
Code-Behind
Round-trips
.NET 4.x only
Blazor
Razor Components
Partial Classes
WebSockets or WASM
.NET 5 only
visualrecode.com
Web Forms -> DotVVM
ALTERNATIVE PATH
visualrecode.com
DotVVM
View - ViewModel architecture
Supports .NET Core & ASP.NET 4.5
Gradual migration
www.dotvvm.com
visualrecode.com
DotVVM demo
visualrecode.com
github.com/RendleLabs/fwDays2020
visualrecode.com
Desktop
visualrecode.com
Desktop options in .NET 5
WPF (Windows-only)
WinForms (Windows-only)
UWP (Windows-only)
Avalonia (x-plat)
Uno Platform (it's complicated)
visualrecode.com
Uno Platform
visualrecode.com
Uno Platform
UWP
iOS
Android
visualrecode.com
Uno Platform
UWP
iOS
Android
WebAssembly
visualrecode.com
Uno Platform
UWP
iOS
Android
WebAssembly
◦ Browser
◦ Electron
visualrecode.com
Uno Platform
UWP
iOS
Android
WebAssembly
◦ Browser
◦ Electron
◦ macOS
◦ Linux
◦ Windows < 10
visualrecode.com
Uno Platform Demo
visualrecode.com
github.com/RendleLabs/fwDays2020
visualrecode.com
WCF -> gRPC
visualrecode.com
WCF with SOAP over HTTP
WCF
.NET
PythonJava
visualrecode.com
WCF with NetTCP
WCF
WCF
WCFWCF
visualrecode.com
WCF Configuration
I heard you like XML…
visualrecode.com
gRPC
visualrecode.com
Protobuf
o Data serialization
o Language-neutral
o Platform-neutral
o Extensible
o Small
o Fast
o Simple
visualrecode.com
gRPC
o Remote Procedure Calls
o Language-neutral
o Platform-neutral
o Extensible
o Small
o Fast
o Simple(ish)
visualrecode.com
gRPC
NetTCP performance
SOAP interoperability
visualrecode.com
gRPC supports
.NET
Java
Go
C++
Objective-C
Swift
Node.js
Python
Ruby
Dart
PHP
Perl
Rust
Haskell
Scala
Kotlin
Elixir
Erlang
Web
devblogs.microsoft.com/aspnet/grpc-web-experiment
visualrecode.com
.NET Core gRPC Demo
visualrecode.com
github.com/RendleLabs/fwDays2020
visualrecode.com
docs.microsoft.com/dotnet/architecture/grpc-for-wcf-developers/
visualrecode.com
Migration Strategies
OR, HOW NOT TO BREAK THE WORLD
visualrecode.com
Re-architect
→ Move as much code as possible into new SDK class libraries
→ Dual-target e.g. net472 and netstandard2.1
→ Extract components to standalone services
→ e.g. Data Access, Mail, etc.
→ Review 3rd-party components
→ Infragistics, ComponentOne, DevExpress?
visualrecode.com
Pre-migration
→ Make sure your NuGet packages are up-to-date
→ And have .NET Standard versions!
→ Remove framework-specific references
→ e.g. ASP.NET's Server, WCF's OperationContext
→ Clean up your code!
→ Go async.
visualrecode.com
Client Shims
→ Only for .NET clients
→ Backward-compatible wrapper around gRPC client
→ Can support .NET & .NET Core clients
→ e.g. Start with .NET 4.8 WPF app and migrate to .NET 5
visualrecode.com
Server shims
→ WCF Proxy to gRPC service
→ Support Basic HTTP, NetTCP, etc.
→ Still requires Windows server(s)
visualrecode.com
Visual ReCode
FROM GIBRALTAR SOFTWARE
CREATED BY ME
visualrecode.com
Visual ReCode
1.0: WCF to ASP.NET Core gRPC
◦ Including support for Duplex and Session services
◦ Available now
1.5: WCF REST to ASP.NET Core MVC
2.0: WebAPI 2.x to ASP.NET Core MVC
visualrecode.com
visualrecode.com
Get in touch
twitter.com/markrendle
twitter.com/visualrecode
www.linkedin.com/in/markrendle
visualrecode.com

Mark Rendle ".NET Is Dead. Long Live .NET!"