.NET Core is the Future of .NET
We introduced .NET Core 1.0 on November 2014. The goal with .NET Core was to take the learning from our experience building, shipping and servicing .NET Framework over the previous 12 years and build a better product. Some examples of these improvements are side-by-side installations (you can install a new version and not worry about breaking existing apps), self-contained applications (applications can embed .NET, so .NET does not need to be on the computer), not being a component of the Windows operating system (.NET ships new releases independent of the OS schedule) and many more. On top of this, we made .NET Core open source and cross platform.
.NET Core 1.0 was primarily focused on high performance web and microservices. .NET Core 2.0 added 20K more APIs and components like Razor Pages and SignalR, making it easier to port web applications to .NET Core. And now .NET Core 3.0 embraces the desktop by adding WinForms, WPF and Entity Framework 6 making it possible to port desktop applications to .NET Core.
After .NET Core 3.0 we will not port any more features from .NET Framework. If you are a Web Forms developer and want to build a new application on .NET Core, we would recommend Blazor which provides the closest programming model. If you are a remoting or WCF Server developer and want to build a new application on .NET Core, we would recommend either ASP.NET Core Web APIs or gRPC, which provides cross platform and cross programming language contract based RPCs). If you are a Windows Workflow developer there is an open source port of Workflow to .NET Core.
With the .NET Core 3.0 release in September 2019 we think that all *new* .NET applications should be based on .NET Core. The primary application types from .NET Framework are supported, and where we did not port something over there is a recommended modern replacement. All future investment in .NET will be in .NET Core. This includes: Runtime, JIT, AOT, GC, BCL (Base Class Library), C#, VB.NET, F#, ASP.NET, Entity Framework, ML.NET, WinForms, WPF and Xamarin.
.NET Framework 4.8 will be the last major version of .NET Framework. If you have existing .NET Framework applications that you are maintaining, there is no need to move these applications to .NET Core. We will continue to both service and support .NET Framework, which includes bug–, reliability– and security fixes. It will continue to ship with Windows (much of Windows depends on .NET Framework) and we will continue to improve the tooling support for .NET in Visual Studio (Visual Studio is written on .NET Framework).
New applications should be built on .NET Core. .NET Core is where future investments in .NET will happen. Existing applications are safe to remain on .NET Framework which will be supported. Existing applications that want to take advantage of the new features in .NET should consider moving to .NET Core. As we plan into the future, we will be bringing in even more capabilities to the platform. You can read about our plans here.
Hi Scott; First of all thanks for the information. As developers we found out that debugging MVC core applications in a windows environment with IIS demands too much effort compared to debugging MVC.net. Same thoughts about (file system) deploying.
ASP.Net Web Forms are a must in .Net Core or .Net 5. Blazor an unreleased experimental framework sounds like a risky choice and a possible waste of time and money. Web Forms are mature, solve problems and work. University’s might be behind on recent trends, but they still teach ASP.Net Web Forms in their curriculum. WCF is also vital!
This is so disappointing!
In October 2018 you said “We will make sure that .NET Framework always supports the latest networking protocols, security standards, and Windows features.”. Of course, we knew the .Net Framework was dead then (suggest reading The Cluetrain Manifesto). Does the fact that .Net Framework 4.8 is the last major version mean that support for new Windows features, etc. will no longer happen?
Nice article, it’s always good to see where things are from 30,000 feet! I do however continue to be concerned about the goals in terms of UI, or rather, I continue to be unclear it’s direction in relation to .NET. Now it’s clear ASP.NET continues the HTML paradigm. It’s really good to hear Mike Harsh talk about WinForms continuity moving forwards with .NET 3, and I think most folks understand what that can do/can’t do and we can park that up, but the rest comes across as a muddle that needs clearing up. We’ve got WPF, Xamarin Forms and the rightly or wrongly maligned UWP. I wish these were all just XAML and that XAML was an extension of HTML (and a C# rather than a markup implementation is fine with me), but it’s currently just too confusing and we’re losing cycles. And if I’m building a new app from scratch, I’m really not clear, or more importantly unconvinced regarding direction, what is it I’m supposed to start with?
A web UI and a desktop UI are enough to contend with and I really hoped following .NET back in 2002 we were going to end up with one UI stack. One’s a peach, two’s OK but one + three’s a crowd!
If .net core does nothing else but solve “dll hell” (which it has), it’s still worthy of a nobel prize.
.net core just works. I can’t overstate how much that has changed my average day.
How can you guys not bring Web Forms forward? This is so ridiculous. You are breaking backward compatibility.
I worked on a major MVC project back in 2010. In terms of efficiency and feasibility for the actual project, it was in my opinion a complete disaster. Since then, Microsoft has continued to promote this stupid paradigm thereby increasing the complexity of developing web applications substantially and to the point where Microsoft web development is a complete mess.
Though I am retired, I am still developing and keeping abreast of the current trends. As a result, I continue to see the same Redmond endeavors that undermine the overall Microsoft Development Community at large with Microsoft’s insane lurching about in the dropping of support for perfectly good technologies in place of newer ones that seemingly only go backwards in terms of ease-of-use and development efficiency.
If the Development Community wants to stop this then it must stop allwoing itself to be cajoled into using these new releases that Microsoft continues to shove down everyone’s proverbial throats.
When I worked with the mainframes many years ago no one thought of continuously introducing new technologies to the market as it would have completely disrupted the running of businesses. With microcomputers this restraint was abandoned as a result of the comparatively easier way to implement new technologies while culturally businesses accepted the disruptions. However, such technologies have matured to such a point that these constant traumas to professional developers are simply no longer warranted or even desired.
If so much is going to be Open Sourced than as it is suggested by the expectations of Microsoft, maybe the internals developers should take the .NET Framework and rebuild it to their own needs instead of relying on Microsoft, which especially under CEO Nadella, has become so completely unreliable and even destructive…
I totally agree. All these new web technologies are full of “tag soup” similar to Classic ASP (and this is bad). ASP.NET WebForms has clear separation of UI and code and is widely used in business solutions. Please port that!
Drop out all your current business developments right now and migrate them to .Net Core because we don’t support’em in the future (reading between lines) [Sadly take it or not]
how to create table if table not exists to existing database in ef core ?
we don’t use migration because our existing databases are with clients devices and want to create additional tables to their databases after updates for feature extensions…
there was an option like Context.DbEntity.Create(); in ef6 but not getting in ef core to do so…
I used the below but it also not creating tables which doesn’t exist…
var databaseCreator = (Database.GetService() as RelationalDatabaseCreator);
catch (Exception ex)