- .NET Core 3 brings many new things to .NET Core. The new version will include C# 8, WinForms, and Entity Framework 6.
- .NET Core 3 will specifically target microservices and be designed for building cloud-native applications.
- Developers will be able to program high-performance, contract-based RPC services in their ASP.NET Core 3.0 applications.
- ASP.NET Core 3.0 will have the ability to use AOT (Ahead of Time Compile) to make developer’s applications native and high performance.
- Microsoft will continue to update .NET Framework for bugs, performance, security, and future standards.
With the release of .NET Core 3.0, Microsoft has the next major version of the general purpose, modular, cross-platform and open source platform that was initially released in 2016. .NET Core was initially created to allow for the next generation of ASP.NET solutions but now drives and is the basis for many other scenarios including IoT, cloud and next generation mobile solutions. Version 3 adds a number of oft-requested features such as support for WinForms, WPF and Entity Framework 6.
NET Core 3.0 officially launches at .NET Conf 2019 September 23-25, a free, virtual developer event. Ahead of the launch, Chris Woodruff talked to Director of Program Management for the .NET platform Scott Hunter about what developers can expect from .NET Core 3.
What is your role with the .NET Core team?
Scott Hunter: I’m the Director of Program Management for the .NET platform. I have a team of Program Managers that oversee .NET Core, .NET Framework, .NET Tooling, Web Tooling, .NET Languages (C#, F#, VB), ASP.NET, Entity Framework, https://dot.net, and the .NET Community. Program Managers on the team make sure we are building the right product for our customers and helping drive the .NET community.
Give some background on .NET Core and where the framework came from, before we go into where it is going.
Hunter: .NET Core started off in 2014, when as a team, we realized the changes we needed to make .NET relevant for the next 20 years could not be done in .NET Framework. Because .NET Framework is part of Windows, there can only be one version on a computer. Therefore, it needs to remain highly compatible, so it doesn’t break any of the applications installed on the over 1 billion Windows machines in the world. Being part of Windows means we can only ship it twice a year, the cycle in which major Windows updates come out. At the same time, open source was taking over software, and all the other programming platforms were open source. We also saw that some developers were using Macs and some companies were hosting their software on Linux, so we needed to be cross platform.
.NET Core was born to be a version of .NET that was open source, cross platform, and many versions could be installed on a single computer. The tooling for it was designed to be CLI-first (Command Line Interface), so developers could develop using .NET Core on any computer using any text editor. We also have great support for it, using traditional tools like Visual Studio, Visual Studio for Mac, and Visual Studio Code.
What do you have planned for .NET Core in version 3.0?
Hunter: .NET Core 3 brings a ton of new things to .NET Core. There are millions of developers using WinForms and WPF to build desktop applications, so we are adding both frameworks to .NET Core. Many of these desktop applications use Entity Framework 6, so we are adding that too. Because .NET Core has always been about open source, we announced in December that we are open sourcing both of those frameworks as well. In addition, .NET Core 3 includes C# 8, .NET Standard 2.1, and more.
What plans do you have for ASP.NET Core 3.0?
Hunter: Many times when we talk about NET Core 3.0, we talk about the new desktop support, but there is also a lot of innovation in ASP.NET. First up, while we are not bringing back WCF, we know that many developers want to program high-performance, contract-based RPC services in their applications. We are embracing the open-source gRPC project for these workloads. We are working to make the .NET implementation first class, and because it is gRPC, it works with many other programming languages as well. There is a new microservices-related Worker Service project for building lightweight background workers, which can be run under orchestrators like Kubernetes. Also, while ASP.NET has great support for building API’s, we want to make it easy to put rich security on top of them, so we are adding bridges to use our API’s with the open-source Identity Server project. Finally, we are working on Blazor, which enables developers to build high-performance web application using .NET in both the browser and server, using Web Assembly.
How does Azure affect your plans for .NET Core?
Hunter: Azure doesn’t directly affect our plans for .NET Core. But, we want to make sure that .NET Core is the best platform for building Cloud-Native applications, including microservice and container-based applications. Traditionally, .NET is thought of more in the context of web and desktop UI and we want to change that perception. While you can build these types of applications today, we don’t make it obvious. We will ship .NET Core 3.0 with templates for building Worker Service projects. We want the platform to have support for diagnostics and debugging, even if you run applications at hyperscale in the cloud.
What are your favorite parts of .NET Core and where do you want things to change in the future?
Hunter: My favorite parts of .NET Core are probably the CLI (command line interface), cross-platform support, and being open source. Just being able to grab a Windows, Mac, or Linux-based machine, jump to the CLI and build an application with an editor of your choice is something you would not have thought of doing with .NET in the past. Also, being able to go to GitHub and watch the product being developed by both Microsoft and community is good. Moving forward, I’m always excited by enabling new workloads for .NET. I’m excited about AOT (Ahead of Time Compile) which will give you small native high-performance applications similar to the Go langauge.
Have there been any surprises with .NET Core being OSS?
Hunter: We open sourced .NET Core in 2014, which seemed *late* to us in the world of open source. We were not sure if the community would embrace the movement, but with over 60,000 contributions from over 3,700 companies outside of Microsoft, it has been a success. Lots of the work to make .NET Core one of the fastest frameworks has come from the community.
What does all this mean for the .NET Framework?
Hunter: .NET Framework is an integral part of the Windows operation system. Windows depends on it, many large-scale products and services from Microsoft depend on it, plus millions of customer applications use it. Because there can only be one version installed on Windows, it has a very high compatibility bar and we are limited in the changes we can make in it. We will continue to update it for bugs, performance, security, and future standards. Future innovation will happen in .NET Core; the side-by-side nature of the platform enables us to move it quickly, without the risk of breaking applications.
Why should developers who have not used .NET and C# for projects look at .NET Core?
Hunter: Today, many developers use the best-available tools that fit the job. If you look at the TechEmpower Benchmarks, .NET Core is one of the fastest frameworks out there. It is powered by the C# language, which has amazing features like Async/Await to make async programming easier (and has been copied by many other platforms), and also supports the F# functional language. There are also great developer tools, whether it is Visual Studio for Windows, Visual Studio for Mac, Visual Studio Code, or Jet Brains Rider
Anything else you want to bring attention to regarding .NET Core 2.2, 3.0 and beyond?
Hunter: We talked a lot about the general platform and some of the history of NET. There are also some other exciting developments in .NET such as Blazor, a programming model that lets developers build web applications using .NET on both the server and the client. On the client we compile .NET into Web Assembly, to get native speeds in the browser and to have all the strong typing of .NET across the client and the server. We are also adding support for machine learning to .NET with ML.NET, which is our open-source .NET machine-learning library. The technology inside this has been used inside Microsoft products for years and we are now making available to the public