Modernize ASP.NET
Web Forms apps and move them to .NET 8 without
rewriting everything

How to start

How it works?

DotVVM is a free and open-source framework for ASP.NET. It lets you create web apps using the MVVM pattern,
with just C# and HTML
. It is an alternative to ASP.NET Web Forms or ASP.NET MVC.

  • Install DotVVM in the existing Web Forms app
  • Create a DotVVM master page with the same CSS styles
  • Start replacing ASPX pages with their DotVVM equivalents
  • Deploy your app at any time during the migration process
  • When all Web Forms pages are gone, switch to .NET 8
Step 1
  • Install DotVVM in the existing Web Forms app
.master .dotmaster +
  • Create a DotVVM master page with the same CSS styles
.aspx .dothtml
  • Start replacing ASPX pages with their DotVVM equivalents
  • Deploy your app at any time during the migration process
.NET
  • When all Web Forms pages are gone, switch to .NET 8

Modernize your app in-place

There is no need to build a new app from scratch, deal with single sign-on, session, caching, and sharing data between the two apps.

Choose your own tempo

DotVVM can run in the same app with other ASP.NET frameworks. You can add new features or fix issues while replacing the old pages one by one.

Keep using the same business layer

In DotVVM, you can access the data the same way as before. No need to build APIs to access data on the client.

Refactor and improve your codebase

Modernizing is an opportunity for refactoring and cleaning up your code. Thanks to the MVVM pattern, it's easy to cover all pages with tests.

Modernize on-the-fly

DotVVM offers a unique way to modernize legacy ASP.NET applications without the need to rewrite everything. It is possible to install DotVVM in the current application and start replacing ASPX pages with their DotVVM equivalents one by one.

The application can be deployed at any point of time during the modernization process. The team doesn't need to replace all the pages in one big release - they can deliver new features while modernizing.

Modernize banner

After some time, when all artifacts which depend on ASP.NET Web Forms are replaced, the project can be switched to the latest version of .NET and benefit from all the new features on the platform.

If you use this method, the only files that to be rewritten are ASPX pages, ASCX controls, and their corresponding code behind files. All the business logic, data access, integrations, and other code can remain without significant changes.

The modernization is also an opportunity to clean up and refactor the code-base, and thanks to the MVVM nature of DotVVM, the pages may be covered with integration tests.

DotVVM allows your current team to continuosly improve your existing application and remove the technological debt. After the modernization is complete, the developers will be able to benefit from all new features and enhancements brought by .NET 8.

When total rewrite is not an option

We have seen many legacy applications that are difficult or even impossible to rewrite.

It would take years to re-build these applications from scratch using modern frameworks and technologies.
The only way to replace such application completely is to hire a new team and wait months until they rediscover and rewrite all business logic, and migrate data to the new system.

In the meantime, a lot of work would have to be done twice because the old application would still need to be maintained and extended with new features.

Modernize your application with DotVVM

FAQ

How much code will actually have to be rewritten?

It depends on the specific app, but certainly not everything.

First, DotVVM pages have different syntax than ASP.NET Web Forms. Although many components have the same names and similar principles, all ASPX pages and ASCX controls will have to be converted to the DotVVM syntax. We have a tool called ASPX Converter that can help with some of most frequent the transforms.

Second, the code-behind files will need to be refactored to DotVVM viewmodels. This can be easy if the code-behind files don't contain much business logic. Unfortunately, we have seen many applications where almost all the business logic was in the code behind files – in such case, conversion to DotVVM viewmodels will need some refactoring.

The rest of the code can remain practically untouched, unless there is something else in the application you'd like to modernize too.

The easiest way to find out is to try migrate several representative pages, and then estimate the effort for migration of the entire application.

Microsoft recommends using Blazor to modernize old apps. How is it different from DotVVM?

Blazor is a new framework that can run C# in the browser using the Web Assembly, or "emulate" that on the server and updating the page DOM using a SignalR connection.

In general, the difference between Blazor and DotVVM is in the amount of code you'll need to rewrite or replace. Because DotVVM can run inside the old Web Forms app (in the same process), it can call the existing business logic directly without the need to expose it as an API, or without the need to run two apps side by side.

If you use Blazor Web Assembly, you'll need to build an API on the server that will allow the app to access the data and call the business logic. You can embed the API in the old Web Forms app, but that doesn't help with the modernization much - the ASP.NET Web API also depends on the old .NET Framework.

In case of Blazor Server, you'll need to run two applications because the server-side part of Blazor requires the new ASP.NET Core. Running two applications can bring many challenges: single-sign on, data synchronization, transactions and concurrency, sharing of code and business logic, and more.

DotVVM can be installed in the existing application. You'll be able to call the business logic directly, without hiding it behind some API. This will allow to modernize the app incrementally and continuously. After few weeks or months, you'll be able to get rid of all .NET Framework dependencies, and move to the latest version of .NET.

What about third-party components? Are there equivalents available in DotVVM?

DotVVM itself ships with more than 30 components that are very similar to controls present in ASP.NET Web Forms.

If you are using some third-party commercial components, check out DotVVM Business Pack - it contains advanced components which provide similar functionality.
If you are not sure if DotVVM has equivalent controls, contact us or book an online meeting - we'll be happy to help.

Is DotVVM a good choice in the long-term?

We get this question quite frequently, and we deeply understand the concern.

Some of the developers in our team have been huge fans of Silverlight, and despite the fact that the technology was created and backed by Microsoft, when looking back, it wasn't a good idea to start a large project in it.

We started building DotVVM in 2014, and work on the project continuously until now. We managed to keep DotVVM without significant changes even when .NET Core came out, and we support the wide range of versions starting from .NET 4.5.1.
We are committed to keep up with the latest versions of .NET as well as to support our customers who need to run their apps in ancient browsers like Internet Explorer 11.

If the project is critical for your business, contact us - we'll be happy to provide a commercial support, priority bug fixes, consulting or any kind of help with the development.

Not sure if DotVVM is the best good choice for you?

We'll be happy to talk with you and see whether DotVVM can help in your scenario.