What You Should Know When Converting an On-Prem Windows Application to Cloud

Since long before Steve Ballmer chanted "Developers, developers, developers!" a key part of Microsoft's strength in the enterprise has been the installed base of custom line-of-business applications built on Windows technologies like .NET Framework, IIS, and SQL Server.

If you’re responsible for supporting or maintaining one of these on-premises applications, you might be thinking about moving it to the cloud. While it would take some work, the effort can pay off in terms of lower operational costs and easier access for your more-remote-than-ever userbase.

The best approach for moving an to the cloud depends on the technologies it uses. Let's consider a stereotypical example—ASP.NET front end, hosted in IIS, with data stored in SQL Server and authentication via Active Directory.

Decide If You Can Move to .NET Core

The .NET Framework will never run anywhere but Windows. Your deployment options open up significantly if you can port the application to run on .NET Core instead. .NET 5 is mature, performant, and supports a lot of .NET Framework's API surface, though various legacy APIs such as ASP.NET Web Forms and Windows Workflow Foundation never made the move and aren't likely to at this point.

Use the Microsoft .NET Portability Analyzer to identify any dependencies that aren't available on .NET Core. For each one, decide whether you can replace it with something supported on .NET Core (or just do without) or whether this means you need to stay on .NET Framework.

Even if it doesn't look cost effective to replace all the .NET Framework dependencies, you can still containerize the application on Windows and realize simpler and more consistent deployments.

Data Storage

Microsoft SQL Server is available as a managed service in all major public clouds. For most SQL Server-based applications, this would be an easy transition.

However, managed SQL Server incurs a per-hour licensing cost, making it significantly more expensive to run than open-source relational databases like MySQL or PostgreSQL. If you’re a Microsoft Software Assurance customer, you may be able to use your existing SQL Server license on Azure and avoid this additional per-hour cost via License Mobility.

Otherwise, you need to assess the development costs of shifting to an open-source RDBMS and weigh them against the ongoing operational costs of the SQL Server licensing. This development cost will likely be smaller if your application accesses its database mostly through an ORM (object-relational mapping) system such as Entity Framework or NHibernate. Direct SQL queries will likely need to have their query syntax adjusted to account for differences in the SQL dialect supported by SQL Server and the new target database in addition to replacing use of ADO.NET APIs like SqlConnection and SqlCommand.

An emerging option for running without SQL Server is Amazon Babelfish for Aurora PostgreSQL, a proxy that sits between the application and AWS Aurora PostgreSQL and translates the network protocol and query syntax on the fly.

Consider Authentication

Existing on-prem Windows applications are likely to be using Active Directory authentication via the NTLM or Kerberos protocols. This can give a nice integrated single sign-on experience for Windows users logged in to their laptops via AD, but it’s not a good fit for a cloud-hosted application. Instead, check out the Microsoft identity platform, which can give seamless and secure authentication with Azure AD for apps written in many popular web frameworks.

What About VB6?

Visual Basic 6 has no future in the cloud. While Microsoft has committed to supporting the VB6 runtime for the support lifetime of Windows 10, at least to the level of addressing "serious regressions and critical security issues," the VB6 IDE hasn’t been supported since 2008. You should plan on rewriting or replacing any VB6 apps still in use.

Monitor and Manage Performance

You can easy monitor your cloud, on-premises, and hybrid application environment with SolarWinds® Server & Application Monitor. To keep your cloud application performing well and support future troubleshooting and root cause analysis, consider installing the SolarWinds AppOptics distributed tracing agent.