{"id":45151,"date":"2023-04-10T11:05:00","date_gmt":"2023-04-10T18:05:00","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/dotnet\/?p=45151"},"modified":"2024-12-13T14:16:36","modified_gmt":"2024-12-13T22:16:36","slug":"learn-how-to-modernize-your-dotnet-apps","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/dotnet\/learn-how-to-modernize-your-dotnet-apps\/","title":{"rendered":"Learn how to modernize your .NET apps from the pros!"},"content":{"rendered":"<p>There are a lot of great reasons to update your .NET apps to the latest and greatest versions of .NET. You can take advantage of new features, get better performance, and improve security. But how do you know where to start? What are the best practices for modernizing your apps? And how do you know if you&#8217;re doing it right?<\/p>\n<p>Fortunately, we&#8217;ve got a lot of great resources based on real world experience working with customers to modernize their apps. In this post, we&#8217;ll share some top resources to help you modernize your .NET apps.<\/p>\n<h2>Why upgrade?<\/h2>\n<p>If you&#8217;ve got working code and limited hours, you might be wondering why you should upgrade your .NET apps. Here are some of the top reasons:<\/p>\n<h3>Take advantage of huge performance improvements<\/h3>\n<p>Performance has been a major focus in .NET 7. We&#8217;ve made a lot of improvements to the runtime, the JIT, the GC, and in all of the application workloads. We&#8217;ve written <a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/category\/performance\/\">a lot of blog posts on .NET performance improvements<\/a> because it&#8217;s a core focus for us, and a key value for you. By updating your applications, you get two big performance benefits: faster execution, and better efficiency. These offer substantial customer experience improvements for your customers, and significant cost benefits for application owners.<\/p>\n<h3>Use new features and paradigms in your applications<\/h3>\n<p>Each release of .NET includes a lot of new features &#8211; new APIs, support for new standards, language features, updated platform support, and more. Newer releases include support for modern application paradigms like <a href=\"https:\/\/dotnet.microsoft.com\/learn\/aspnet\/microservices-architecture\">microservices<\/a>, serverless, and modern CI\/CD.<\/p>\n<h3>Enable new development and deployment opportunities with cross-platform support<\/h3>\n<p>Moving from .NET Framework to modern .NET unlocks an entire new world of cross-platform support. You can develop and run your apps on Windows, Linux, and macOS, and you can deploy them to the cloud or on-premises.<\/p>\n<p>If you&#8217;re on a previous version of .NET Core, upgrading to the current release gives you additional cross-platform support, including [enhanced support for Linux and containers] as well as first tier support for additional <a href=\"https:\/\/github.com\/dotnet\/runtime\/issues\/43313\/\">support for Apple M1<\/a> and <a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/arm64-performance-improvements-in-dotnet-7\/\">ARM64<\/a>.<\/p>\n<h2>Now is a great time to upgrade, thanks to the Upgrade Assistant!<\/h2>\n<p>Our team supports a lot of large customers who have significant upgrade challenges &#8211; large applications with decades of code, complex build and deployment pipelines, and a lot of dependencies on third party libraries. We&#8217;ve learned a lot from these customers, and we&#8217;ve built a tool based on what we&#8217;ve learned: the <a href=\"https:\/\/dotnet.microsoft.com\/platform\/upgrade-assistant\">.NET Upgrade Assistant<\/a>. Originally we shipped the .NET Upgrade Assistant as a CLI tool; based on your feedback, we now provide <a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/upgrade-assistant-now-in-visual-studio\/\">a unified upgrade experience for every project type inside of Visual Studio<\/a>. We&#8217;ve updated our training material and created new video content to help you get started with the Visual Studio Upgrade Assistant extension.<\/p>\n<h2>Get a quick start with our two hour Let&#8217;s Learn .NET video<\/h2>\n<p>This two hour video is a great place to get started. <a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/author\/olga-gavrysh\/\">Olia Gavrysh<\/a> and <a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/author\/mikerou\/\">Mike Rousos<\/a> walk you through the basics of modernizing your .NET apps:<\/p>\n<ul>\n<li>Why upgrade?<\/li>\n<li>Supported workloads and paths<\/li>\n<li>The Visual Studio Upgrade Assistant extension<\/li>\n<li>Walkthrough upgrading an ASP.NET MVC 5 (.NET Framework) app to .NET 7<\/li>\n<li>Using the Upgrade Planner<\/li>\n<li>Desktop and Xamarin upgrades<\/li>\n<li>Top resources<\/li>\n<\/ul>\n<p><iframe width=\"752\" height=\"423\" src=\"https:\/\/www.youtube.com\/embed\/JwKkff93rCA\" allowfullscreen><\/iframe><\/p>\n<h2>Go hands on with our updated Learn Module<\/h2>\n<p>We&#8217;ve updated the <a href=\"https:\/\/learn.microsoft.com\/training\/modules\/modernize-aspnet-framework-to-core\/\">Modernize ASP.NET Framework to ASP.NET Core with the .NET Upgrade Assistant<\/a> module on Microsoft Learn to show the latest guidance on using the Visual Studio Upgrade Assistant extension. This module walks you through the process of upgrading the same ASP.NET MVC 5 application that we used in the Let&#8217;s Learn .NET video.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2023\/04\/modernize-aspnet-learn-module.png\" alt=\"Screenshots of ASP.NET Modernization Learn Module\" \/><\/p>\n<h2>Deep dive video series on ASP.NET app modernization<\/h2>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/author\/mikerou\/\">Mike Rousos<\/a> shares his experience working with customers to modernize their ASP.NET apps. In this <a href=\"https:\/\/aka.ms\/modernize-aspnet-videos\">18 part video series<\/a>, he walks you through the process of upgrading a <a href=\"https:\/\/github.com\/mjrousos\/UpgradeSample\">more complex ASP.NET MVC 5 (.NET Framework) app<\/a> to ASP.NET Core 7, using all the latest tools including the Visual Studio Upgrade Assistant extension, <a href=\"https:\/\/learn.microsoft.com\/aspnet\/core\/migration\/inc\/overview\">YARP based incremental migration<\/a>, and the <a href=\"https:\/\/apisof.net\/upgrade-planner\">Upgrade Planner<\/a>. This walkthrough shows some more advanced issues that you might encounter when upgrading your apps, such as sharing session state, static resources, and authentication over the course of an incremental migration that may span weeks or months.<\/p>\n<p><iframe width=\"752\" height=\"423\" src=\"https:\/\/www.youtube.com\/embed\/videoseries?list=PLdo4fOcmZ0oWiK8r9OkJM3MUUL7_bOT9z\" allowfullscreen><\/iframe><\/p>\n<ol>\n<li><a href=\"https:\/\/youtu.be\/zHgYDZK3MrA\">.NET Migration Overview<\/a><\/li>\n<li><a href=\"https:\/\/youtu.be\/Fb6PsBW2ekg\">Why Upgrade to .NET?<\/a><\/li>\n<li><a href=\"https:\/\/youtu.be\/FRrslz_AHzE\">Getting Started with .NET Upgrade Assistant<\/a><\/li>\n<li><a href=\"https:\/\/youtu.be\/_nox9CYaA_s\">Analyzing a Solution with .NET Upgrade Planner<\/a><\/li>\n<li><a href=\"https:\/\/youtu.be\/TwAKnZ-XcU4\">Upgrade Analysis with .NET Upgrade Assistant<\/a><\/li>\n<li><a href=\"https:\/\/youtu.be\/ttangBEcZfo\">Upgrading a Project with .NET Upgrade Assistant<\/a><\/li>\n<li><a href=\"https:\/\/youtu.be\/B2vz98yfskc\">Intro to the Upgrade Assistant Visual Studio Extension<\/a><\/li>\n<li><a href=\"https:\/\/youtu.be\/LQxSX_gkNj4\">Creating a New Project with the Upgrade Assistant Visual Studio Extension<\/a><\/li>\n<li><a href=\"https:\/\/youtu.be\/RpGnyN8c5qw\">Migrating an Endpoint with the Upgrade Assistant Visual Studio Extension<\/a><\/li>\n<li><a href=\"https:\/\/youtu.be\/TB7nfriQuGI\">Migrating a Class Library with System.Web Dependencies<\/a><\/li>\n<li><a href=\"https:\/\/youtu.be\/_XG3EYRcgY8\">Using System.Web Adapters to Share Session State in ASP.NET Upgrade Scenarios<\/a><\/li>\n<li><a href=\"https:\/\/youtu.be\/5hEghsFQB48\">Using System.Web Adapters to Share Authentication in ASP.NET Upgrade Scenarios<\/a><\/li>\n<li><a href=\"https:\/\/youtu.be\/WF-8Yz8QKcw\">Sharing Authentication Cookies in ASP.NET Upgrade Scenarios<\/a><\/li>\n<li><a href=\"https:\/\/youtu.be\/SmP38AW4KkY\">Migrating static content from ASP.NET to ASP.NET Core<\/a><\/li>\n<li><a href=\"https:\/\/youtu.be\/u5Hspwt50O0\">Deploying an Incrementally Migrated ASP.NET App to Azure App Service<\/a><\/li>\n<li><a href=\"https:\/\/youtu.be\/rPEZ3_-CjDM\">ASP.NET to ASP.NET Core Migration Wrap-Up<\/a><\/li>\n<li><a href=\"https:\/\/youtu.be\/w2FUHYLR0hM\">Upgrading from WCF to CoreWCF<\/a><\/li>\n<li><a href=\"https:\/\/youtu.be\/zXoGXbB3JDI\">Deep Dive into System.Web Adapters<\/a><\/li>\n<\/ol>\n<h2>Resources for Xamarin upgrades<\/h2>\n<p>It&#8217;s a great time to update &amp; migrate your Xamarin.iOS and Xamarin.Android apps to the latest version of .NET so you can take advantage of the latest features of .NET 7 including C# 11 and the new project system. <a href=\"https:\/\/devblogs.microsoft.com\/xamarin\/author\/jamesmontemagno\/\">James Montemagno<\/a> recently posted some top <a href=\"https:\/\/devblogs.microsoft.com\/xamarin\/upgrade-xamarin-ios-android-to-dotnet6-dotnet7\/\">Tips &amp; Tricks on Upgrading Xamarin.iOS &amp; Xamarin.Android to .NET for iOS &amp; Android<\/a>. We&#8217;ve also posted some updated <a href=\"https:\/\/learn.microsoft.com\/dotnet\/maui\/migration\/?view=net-maui-7.0\">docs on how to upgrade from Xamarin to .NET<\/a>.<\/p>\n<h2>Summary<\/h2>\n<p>We know that modernizing your .NET applications can be challenging, and we&#8217;ve worked hard to share our experience and best practices with you. We hope these resources help you modernize your .NET apps.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We&#8217;ve got some great new resources to help you modernize your .NET apps, from intro videos and hands on modules to deep dive walkthroughs.<\/p>\n","protected":false},"author":470,"featured_media":45165,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[685,195,197,7509],"tags":[3267,7637,7672],"class_list":["post-45151","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-dotnet-framework","category-aspnet","category-aspnetcore","tag-migration","tag-modernization","tag-upgrade-assistant"],"acf":[],"blog_post_summary":"<p>We&#8217;ve got some great new resources to help you modernize your .NET apps, from intro videos and hands on modules to deep dive walkthroughs.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/45151","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/users\/470"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/comments?post=45151"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/45151\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media\/45165"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media?parent=45151"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/categories?post=45151"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/tags?post=45151"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}