Microsoft’s .NET Core 2.0 is the future for .NET shops planning to modernize their codebase and take advantage of a services architecture in the cloud. It’s also the best option for new digital native apps targeting VMs, containers, and App Services (PaaS) on Azure. Being open source has allowed .NET Core to evolve quickly and become cross platform. Now decoupled from Windows, .NET Core is positioned to grab market share aggressively from alternatives such as Java running on Linux.
That’s why New Relic is working hard to make sure that future .NET Core 2.0 apps can be auto-instrumented and observable within the New Relic Digital Intelligence Platform.
Why .Net Core 2.0 is a game-changer
We see five key reasons why .NET Core 2.0 is changing the game for software development shops:
Reason 1: Cheaper cloud scaling of .NET web apps and services running on Linux on leading platforms like Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform (GCP).
Reason 2: Portability and reusability of code across various operating systems and clouds.
Reason 3: Easier to build and manage service architectures using ASP.NET Core 2.0 APIs.
Reason 4: Faster web apps using the same resources when using .NET on Kestrel web server vs. IIS.
Reason 5: Latest and greatest .NET APIs and features.
We will look more closely at each of those reasons below, but it’s important to note upfront that New Relic brings several key advantages when it comes to instrumenting apps built with .NET Core 2.0:
New Relic Advantage 1: Modern APM architecture that lets you quickly auto-instrument code with low overhead via an agent and send telemetry to a multi-tenant SaaS platform for monitoring, dashboarding, and analysis.
New Relic Advantage 2: Built for your largest days, the New Relic Digital Intelligence Platform frees your team to focus on major initiatives instead of worrying about how to build and scale application-monitoring infrastructure.
New Relic Advantage 3: Cloud Platform integrations let you tie in service metrics and machine metadata from AWS and Azure.
.NET Core 2.0 background
Microsoft has been making giant strides toward embracing the open source community since Satya Nadella took over as CEO in 2014. Last year’s launch of .NET Core was a major milestone in making the .NET platform more attractive to open source users. Since .NET Core’s launch, it has quickly evolved into a very competitive offering that runs not only on Windows, but also on Linux and OSX. This aggressive move has created the opportunity for New Relic to monitor the performance of new .NET Core 2.0 services alongside legacy .NET Framework applications in addition to browser and infrastructure metrics.
.NET Core is instrumental to Microsoft’s strategy of encouraging developers to move from large, monolithic, on-premise enterprise applications to collections of scalable microservices running on Azure. Microsoft has lowered the barrier for new developers to start using .NET Core by giving away Visual Studio Code and closely integrating it with the Azure platform. In addition, existing .NET framework developers will now have an easier time porting code to Core 2.0 because of the expanded API overlap with .NET Standard 2.0 and .NET Framework 4.6.1.
Observers expect a large number of new and legacy developers to make the leap to .NET Core 2.0 this year because of its current maturity and lowered barrier to migration. But although these changes benefit developers, they also amplify the complexity facing operations teams trying to get visibility into application and service performance, especially when asynchronous code patterns exist.
The five reasons why .NET Core 2.0 is a game changer
Now it’s time to look more closely at how .NET Core 2.0 is changing the game, and how New Relic offers advantages in each situation:
Reason 1: Cheaper Cloud Scaling
Organizations can quickly modernize legacy .NET code, improve app performance, and enable portability from Windows to Linux.
Microsoft’s .NET Core is open source and lets apps run not only on Windows, but also on Linux and OSX. It includes a runtime, framework libraries, compilers, and tools that support a variety of chip and OS targets. These components can be used together or separately. You’ll see teams begin to use .NET web apps on Linux for cost-effective scaling of services without Windows. By natively supporting Linux and OSX, developers won’t have to build their own stack using Mono.
The latest preview of Core 2.0 nearly doubles the number of APIs available over Core 1.x and now includes almost all the APIs in the .NET Standard 2.0 libraries. This greatly expands the API surface area and creates a compelling reason for developers to port their legacy applications forward. New applications targeted for .NET Standard 2.0 are compatible to Microsoft’s proprietary .NET Framework 4.6 and Core 2.0 for teams not ready to take the full plunge.
The New Relic advantage: The New Relic Digital Intelligence Platform is designed to help teams manage their application performance during cloud migrations as well as monitor operations across complex multi- and hybrid-cloud environments.
Reason 2: Portability and reusability of code
.NET Core 2.0 offers simplified and more flexible development, deployment, and maintenance of .NET apps for DevOps teams across different platforms.
Legacy .NET framework apps were designed to run only in Microsoft environments. They were confined to specific Windows OS and IIS web server options combined with specific runtimes installed on the host. Older .NET framework apps ran properly only on Microsoft’s proprietary Common Language Runtime (CLR) that was packaged with Windows releases and Visual Studio releases. Apps built using .NET Core APIs can also run on Linux and OSX in addition to Windows, using different runtimes such as the new cross platform CoreCLR, Microsoft’s CLR 4.0, and alternatives like MonoCLR.
Traditional .NET developers will want to make the switch not only because .NET Core is light and fast, but also because they can package the runtimes in their app, decoupling them from machine-loaded runtimes, and ultimately allow coexistence of multiple runtime versions on the same machine or VM. This gives developers more flexibility to dynamically scale their webapps and microservices.
The New Relic advantage: New Relic has cloud compute unit pricing—vs. host pricing—with support for Docker containers and cloud platform integrations, giving DevOps teams the ability to get full-stack visibility independently of how they run their .NET applications and services.
Reason 3: Easier to build and manage service architectures
With .NET Core 2.0, developers can quickly build and deploy scalable web apps without reinventing the wheel.
ASP.NET Core 2.0 is the latest release of Microsoft’s web-centric APIs. It’s a subset of APIs that overlap both .NET Core 2.0 and Microsoft’s .NET Framework 4.6. The latest version combines and simplifies legacy ASP.NET MVC and Web APIs into a single programming model and is built upon the latest version of the high-performance Kestrel web server. ASP.NET Core is an ideal platform for building web APIs and RESTful apps on .NET Core and is designed to be easily integrated with client-side frameworks such as AngularJS, KnockoutJS, and Bootstrap.
The New Relic advantage: New Relic’s full-stack approach extends APM monitoring with New Relic Infrastructure, New Relic Browser, New Relic Mobile, and New Relic Synthetics so that teams can more easily determine whether performance issues stem from the server or the client.
Reason 4: Faster web apps
Ops teams will benefit from reduced scaling costs and improved efficiency with Core 2.0 and Kestrel.
Microsoft had a difficult time competing with high-performance open source web servers until it released Kestrel. But recent benchmarks from GitHub place ASP.NET running on Kestrel in the top tier of performers, gaining two orders of magnitude compared to the company’s legacy IIS server. (Watch this video to see how Microsoft did it.)
Kestrel is the new default web server for ASP.NET applications and comes bundled with .NET Core. It is built upon a cross-platform building block of Node.js (libuv) and provides support for asynchronous I/O based on event loops. Most important, it boasts very high performance (1.2M+ requests/sec); the benchmarks speak for themselves.
The New Relic advantage: Using New Relic, teams can pull together applications and services across multiple platforms written in Java, Node.JS, Python, and Go into a single source of truth, providing better visibility into the entire business.
Reason 5: The latest and greatest .NET APIs and features
ASP.NET Core 2.0 provides a compelling reason for .NET shops to port their code forward from legacy .NET Framework because it enables the best of both worlds. Large ASP.NET applications can be cost-effectively broken up into smaller portable services targeting ASP.NET Core while allowing them to reuse a good amount of old code. Any high-demand service written for ASP.NET Core can be aggressively scaled out to run on public cloud at a low cost by packaging it with the open source CoreCLR running on Linux.
Older legacy parts can stay in production running at improved speeds working as middleware, proxying requests from IIS to Kestrel while still maintaining the kernel caching, logging, and security features of IIS and Windows Server. And the recent release of Azure Stack uses a hybrid approach to further lower the barrier yet again for large .NET migrations to service architectures. Teams can start building services closely coupled to legacy on-premise systems in their own data center, secure in the knowledge that there’s a way to migrate the services onto the Azure cloud when they’re ready.
The New Relic advantage: New Relic lets teams track the performance of .NET Framework 3.5-4.6.2 apps running on Microsoft CLR4 next to Core 2.0 apps and services on CoreCLR. That gives users maximum flexibility and visibility as they modernize legacy apps and move to the cloud.
Supporting Microsoft’s big .NET Core play
Microsoft is making a big play using .NET Core to better position its Azure cloud platform. New Relic is a Microsoft Gold Partner and is committed to developing the best tools to help .NET DevOps teams understand and improve the performance of their applications.
Please take our new survey and let us know how you’re using .NET Core or read our post about our .NET Core 2.0 Agent Beta. If you want to get early access to Pre-Releases of New Relic for .NET, please fill out this online form.
The views expressed on this blog are those of the author and do not necessarily reflect the views of New Relic. Any solutions offered by the author are environment-specific and not part of the commercial solutions or support offered by New Relic. Please join us exclusively at the Explorers Hub (discuss.newrelic.com) for questions and support related to this blog post. This blog may contain links to content on third-party sites. By providing such links, New Relic does not adopt, guarantee, approve or endorse the information, views or products available on such sites.