Modernize ASP.NET
Web Forms apps and move them to .NET 5 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 Core
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 Core

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.

Rewrite banner

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.

Rewrite banner

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.

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 5.

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.

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.