The SolarWinds Platform and .NET: New Horizons With .NET Core
Like most large software development organizations, SolarWinds uses many programming languages to build our applications, including Go, Java, C++, Python, and more. The predominant language for our Orion® Platform is C#, based on Microsoft’s .NET Framework. As you are likely aware, the directions Microsoft has taken the .NET Framework over the past few years have created exciting new opportunities.
Specifically, the decision by Redmond in 2014 to add more utility to .NET by adopting an open-source model and making it truly cross-platform (released in 2016), opened up the option to run applications built in .NET on Linux, Android, iOS. In re-making the platform, Microsoft completed its journey to open source by making its editors (like Visual Studio Code) and libraries free under the MIT License, the foremost OS license and similar to the GNU General Public License.
As a leading framework for web and mobile applications, .NET’s broadened relevance has positive, long-term implications for those developing, hosting, and licensing .NET-based applications. Before we dive deeper into the possibilities, let’s take a brief look at .NET and its journey which brought it to where it is today.
Microsoft began work on the .NET Framework in the late 1990s to simplify the task of software development with a managed code model, complete with class libraries to provide ready-to-use code accessible by multiple applications. The .NET Framework compiles high-level languages like C# and VB.NET into Microsoft Intermediate Language (MSIL), a platform-independent instruction set. The .NET runtime then compiles the MSIL bytecode to platform-specific native code. The Common Language Runtime (or CLR) provides a virtual machine for executing .NET programs largely removing the need for programmers to spend time dealing with active memory management, threading, type safety, and other housekeeping issues.
The first release of .NET in 2002 introduced C# (authored by Anders Hejlsberg, father of Turbo Pascal and Delphi/Object Pascal and heavily influenced by Bertrand Meyer, designer of the Eiffel language), an object-oriented programming language similar to Java. Because .NET was intended exclusively for use on Windows-based PCs and servers, the only option for supporting cross-platform applications emerged with the release of Mono in 2004. This was an open-source effort led by Miguel de Icaza and eventually acquired by Microsoft in 2016 and re-licensed under the MIT License.
To align the .NET Framework with Microsoft’s just-unveiled Azure cloud platform and to address the growing installation and version problems of open-source libraries, the .NET Foundation was launched in 2014. At the same Microsoft Build conference, newly installed Microsoft CEO Satya Nadella announced .NET Core, a re-tooling of the framework as a truly open source, cross-platform environment. The base class libraries were simplified and streamlined as part of this initiative, dropping support for features like application domains, code access security, and remoting.
Migrating to .NET core
Porting applications from the .NET Framework to .NET Core can be a complicated exercise, especially for large applications. The .NET Standard is an API specification that allows some code libraries to run on both .NET Framework and .NET Core, simplifying the migration process.
Senior Product Manager Tony Johnson described the evolution of the Orion Platform into the SolarWinds Platform and Hybrid Cloud Observability (HCO) in his recent post. We have migrated the various modules of Orion into a monrepo and unified the installer. This tighter integration has made it practical for us to begin the process of migrating the SolarWinds Platform to .NET Core, currently targeting .NET 6, the latest Long Term Support (LTS) release.
This migration will take place in several phases. We will migrate libraries from .NET Framework 4.8 to .NET Standard 2.0. Third-party dependencies that are only available for the .NET Framework will need to be replaced with comparable code that is compatible with .NET Core. Once the libraries have been converted, we can convert the applications (Windows services, websites, and command line tools) to .NET Core.
Tools like the .NET Upgrade Assistant can automate portions of this conversion, and open source projects like Core WCF reduce the required scope of change, but migration requires detailed analysis and phased execution for an Orion-sized application. Many of our smaller tools and libraries already target .NET Core, but porting large .NET Framework applications takes time and planning.
The Orion Platform, now the SolarWinds Platform, has served customers well for over a decade as a tool built primarily on the .NET Framework. So, why make the shift to .NET Core? Modernization is one important goal; Microsoft will continue to support the .NET Framework, but all new development effort is focused on .NET Core. Every generation of .NET Core has brought significant performance improvements, and it’s much faster and less resource-intensive than the .NET Framework. Finally, the cross-platform capabilities of .NET Core position us for a degree of flexibility in the future where we could run the SolarWinds Platform on Linux and other platforms. We’re laying the foundations now for a faster, modernized, cross-platform product in the future.
Over the past two years, SolarWinds has invested significant time and effort in unifying the way we build and distribute the Orion Platform, evolving it into the SolarWinds Platform. That foundational investment has positioned us to begin the migration from .NET Framework to .NET Core, improving performance and eventually enabling more cross-platform deployment options. .NET Core is an enabling technology that will help us build on the market-leading strengths of the Orion Platform, modernizing it and integrating with our cloud services as the new SolarWinds Platform. Learn how SolarWinds® Hybrid Cloud Observability can help organizations of any size modernize their IT agility through an integrated IT infrastructure, application, and database performance monitoring solution.