Application modernization has been a priority for some enterprises for a decade or more, but recent developments...
in cloud computing, functional programming and microservice-based applications have opened new practices for consideration. This creates even greater pressure on development managers to make changes to bring their apps up to date. .NET can be a perfect avenue for app mod, and there are five tools that can make it even better.
Any user who has seriously reviewed app mod options realizes that the most significant .NET framework feature is the widespread availability of app mod tools that translate applications to a .NET or hybrid web-and-.NET form. These tools typically aim at three areas: substitution of modern web-enabled GUIs for "green screen" legacy terminal formats, rehosting of critical components as back-end services and translation of programs from a legacy language to something more modern. Just be sure that the tool will support the latest version of .NET (particularly ASP.NET) and that language translation provided will utilize the features of the latest version (C# version 7, for example).
The value of these app mod tools lies in their ability to do some of the mechanical functions associated with app mod, but they can create major problems even if they support all the modern .NET framework features (at least ASP.NET 5). What you have to expect is that you'll fit them into an overall model of a .NET application that you've established based on web and cloud trends, and that you'll modify the applications the tools create as needed. That future model should be based on hybrid cloud, web-friendly front end, and service-and-microservice business processes. In particular, look for the four .NET framework features cited below.
.NET framework features for app mod
One of the best .NET framework feature for app mod is explicit support for session state store providers. One of the oft-forgotten but highly restrictive practices of legacy applications is stateful execution, which stores values in application memory between activations. This prevents the application from being scaled as workload increases and also makes debugging difficult because artifacts left by a previous work element can change application behavior.
With session state store, applications can store state in a process/database and restore it to any context, whether it's using the same instance of the application or component as the one that processed whatever came before. Session state store may not be as flexible or efficient as a truly RESTful, stateless, microservice, but it's much easier to evolve to use it than to rewrite legacy applications to be fully stateless.
The third best .NET framework feature for app mod is Agile connectivity between the front- and back-end components of your applications. The most problematic aspect of app mod is the GUI, because this is what workers see of applications and where most complaints are focused. In modern applications, the GUI is separated from business processes and implemented using web-friendly languages like Java, Ruby and so on. .NET now offers a feature that was developed for Microsoft's Azure cloud platform, Service Fabric.
With Service Fabric, front-end work can be steered to a back-end business process component using a generalized service bus that supports publish-and-subscribe and multiple process instances. It's a fully distributed model, so there's no single point of failure, and it supports both ASP.NET and Azure hosting of business functions. If you adopt Service Fabric you're building the framework for future componentized, servicized, modular, Agile, hybrid-cloud applications. Windows Workflow Foundation is also very helpful in structuring process workflows within the business layer, which is important when converting monolithic applications to modern component/service models.
The next critical .NET framework feature is Azure integration, a conceptual extension of the Service Fabric's hybrid model of computing. Microsoft's App Service, for example, is available to .NET app mod developers to absorb the front-end requirements of both mobile and traditional platforms. If your app mod conversion exploits that capability, you'll be well-prepared for future BYOD requirements and for application enhancements to target worker productivity by harnessing mobile equipment to support remote activity.
.NET is supported both in the Azure platform and in the data center, and integration across the two platforms is much easier than it would typically be for hybrid clouds created using infrastructure as a service. Many of the Azure cloud features are also supported in ASP.NET, so hosting applications and components in both the cloud and the data center -- and moving between them -- is facilitated by the implementations of all .NET's workflow tools. For example, look at things like the cryptographic features of Azure and ASP.NET as examples of how to make legacy applications secure after app mod changes have been made.
The final .NET framework feature that could be critical is the cloud and microservice design patterns offered by Microsoft and partners to facilitate the development of advanced applications. Design patterns have become critical tools in creating software quickly and in a form that lends itself to portability and efficient application lifecycle management. New technologies like microservices often generate a wave of innovation, not all of which is efficient or even logical. Design patterns put developers on the right path.
Choosing a .NET design
The popularity of .NET is a big driver for the development of these design patterns. Because of this, .NET programmers have a lot of patterns to choose from, and not only at the high level where basic microservice or cloud architectures are defined. The implementation of microservices and cloud computing could involve a dozen or more changes in development practices, and .NET design patterns (and even direct middleware tools) support them all.
The cloud, real-time computing and microservices are the primary elements that separate leading-edge applications from past practices. Because .NET has such rich support for these futuristic trends, and for evolving current applications to use them, applications based on it can evolve quickly and efficiently and .NET users can not only participate in these critical trends, but lead them.
Is Service Fabric a good alternative to microservices?
Learning the best app mod for your business
How app modernization is different from digital transformation