Fundamentals

What is DotVVM?

DotVVM is an open-source framework that helps you build of line of business web applications in ASP.NET and the Model-View-ViewModel approach.

If you have to build a web app with dozens of pages with grids or complicated forms with a bunch of fields, modal dialogs, or multi-page wizards, DotVVM is the framework for you.

The main audience for DotVVM are .NET developers, but of course, anyone is welcome.

Yet another framework? We have Angular, React, Vue...

Angular, React or Vue are mainly client-side libraries that don't rely on any particular technology used on the server. You can use Node.js, PHP, Java, or anything else. You can also choose any technology to do server-to-client communication – REST, GraphQL, or others... However, you need to learn many things.

DotVVM is not only a client-side framework – it includes also the server-side part which runs on .NET. With DotVVM, you need .NET on the server. But thanks to it, you will spend much less time dealing with the client-server communication because it is handled by DotVVM itself. You will also be able to continue to use Visual Studio, C#, and tools you know. You won’t need to learn almost anything about JavaScript, its libraries and tools. Knowledge of this will certainly help you, but you can build a lot of stuff without writing a single line of JavaScript code or running npm.

What's the difference between DotVVM and Blazor?

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.

Blazor with Web Assembly is more similar to the React/Angular/Vue approach - you need to create an API on the server (REST, GraphQL, gRPC), and the application will be calling it. If the app needs to connect to a database, it shouldn't do it directly from the client - it should go through the API. This requires slightly more work because you'll need to hide your business logic behind the API and generate or maintain the client-side code which calls the API. Also, the app size will be a few megabytes - even though the .NET team made a great job to optimize the download size of the runtime and libraries, still, you need to download a lot of code that is not a part of the browser. DotVVM takes only about ~100kB of JavaScript code, and it's even less when HTTP compression is enabled.

Blazor Server is more similar to DotVVM, because your C# code runs on the server. Thus, you can directly communicate with the database or other services on the server. However, Blazor Server relies on a SignalR connection which may be a limitation on slow or unstable networks. DotVVM doesn't require a persistent connection - it makes plain old HTTP with a JSON payload which makes it convenient even on non-reliable networks.

What do I need to know to start?

C#, HTML and basics of CSS. That’s it.

You can start with DotVVM Academy to learn the basics. Then, you should read the documentation which will guide you through all features of DotVVM.

So I don’t need to know anything about JavaScript?

You can build DotVVM web apps with a lot of client-side interactivity without knowing JS, just with C# and HTML. Of course, we recommend learning JavaScript because it will open you a lot of great opportunities to extend DotVVM, build your own controls, or wrap third-party ones.

The good thing is that even if you only know the basics of using jQuery, you will be able to start and learn the things you need as you go.

What kind of web apps is DotVVM good for?

DotVVM was built to simplify creating "line of business applications". It contains a lot of controls that you will need in such apps – GridView, DataPager, all form controls. There is also a lot of features you can find useful: validation, localization, date and number formatting, or SPAs.

If you really mean it, check out DotVVM Business Pack, a set of controls built just for big enterprise web apps with advanced GridView, controls like DateTimePicker, AutoComplete, TreeView, or TabControl. These controls are built just for DotVVM. They support DotVVM data-binding syntax, integrate with validation and all other DotVVM mechanisms.

Can I write any site with DotVVM?

Yes - DotVVM can render any HTML you need. However, there are several types of websites where using DotVVM doesn’t have any benefits. If you are building a simple site with mostly static pages or very simple forms, or if you have a large public-facing site that requires perfect SEO, it’s better to use ASP.NET MVC or Razor Pages.

On the other hand, DotVVM can be used together with other frameworks in one application. If you have an e-commerce site with a public-facing area and an admin portal, you can use DotVVM only for the admin part and for the order process. For the home page and product listing pages, you can use something else.

Products and Services

What about pricing?

DotVVM framework is open-source (https://github.com/riganti/dotvvm) and free to use for anyone.

There is also a free extension for Visual Studio 2015, 2017 and Visual Studio Code.

With these free tools, you are able to build practically any web application.

We also offer several commercial products which will save you a lot of time:

  • DotVVM for Visual Studio Pro will give you better IntelliSense, easier navigation in the code editor, and real-time error checking.
  • Bootstrap for DotVVM is a set of controls that make Bootstrap easier to use. You will get the shorter and cleaner syntax for building complex Bootstrap widgets like the responsive menu or modal dialog. There is also an extra DateTimePicker control styled to fit the Bootstrap look and feel.
  • DotVVM Business Pack is a set of enterprise-grade controls for the most complicated line of business sites. It contains advanced controls to build complicated forms or work with data and includes several customizable themes.

Can I rely on DotVVM? Is it suitable for an app that should work for next 15 years?

The development of DotVVM started in 2015 and the first stable release was here in mid-2016. Since then, DotVVM 1.1 added support for .NET Core, and DotVVM 2.0 extended the features of data-binding. DotVVM 3.0 introduced support for JS directive which simplifies the integration of DotVVM and other JavaScript libraries. DotVVM 4.0 plans to simplify creating custom DotVVM components.

We have a backlog full of features that will take years to complete, and since we are also using DotVVM to build apps for our customers, we will keep maintaining it for a very long time.

Of course, there are many things that can change in web development. Especially the front-end frameworks change very frequently and planning for 10 years is almost impossible. Everyone who has used Silverlight can confirm that even a global company cannot make a guarantee that a technology will succeed.

DotVVM team is actively watching new technologies like Web Assembly and new browser features, and we are planning how to integrate them into the framework. We are committed to continuing with the development and adding new features continuously.

If you really want to be sure that DotVVM will work for the entire lifetime of your application, contact us. We can provide you with a support contract that includes bug fixes, and support of new versions of major browsers.

Do you offer support?

Yes, we do. Tell us what you need and we will find a solution.

Most commonly we help with:

  • Help with integrating DotVVM in existing ASP.NET projects
  • Guidance of designing a proper architecture of the application
  • Building of custom controls

Where is the roadmap? What are your plans for the future?

Yes, it is posted on our GitHub. If you have any particular questions, ask us on Gitter.

Integration Scenarios

Isn‘t DotVVM another ASP.NET Web Forms?

DotVVM was inspired by several technologies. Some concepts (like postbacks) come from ASP.NET Web Forms. Also, MVVM-related things come from WPF and Knockout JS.

We know that ASP.NET Web Forms were criticized for many things, and we didn’t repeat the same mistakes.

  • Thanks to MVVM, the viewmodels are easily testable.
  • There is no cryptic viewstate field. The state transferred between the client and the server is a JSON representation of the viewmodel, which is your own class. You decide what is the part of the state and what is not. DotVVM also allows to customize what properties are transferred in which direction (server to client, client to server, both, etc.) or to offload some data away from the viewmodel (e.g. using static command binding or REST API bindings).
  • The HTML produced by the server controls is valid, CSS-styleable, and documented. The controls do not render any inline styles. You are in control of how things look like.

I have an old Web Forms web app. Can DotVVM help me with transition to .NET 5?

There are many old ASP.NET Web Forms applications used out in the world, and most of them cannot be rewritten in a reasonable amount of time.

Because DotVVM can be used together with ASP.NET Web Forms, you can modernize these old web apps. The only thing you need to do is to install a few NuGet packages and create a DotVVM master page that looks the same. DotVVM can use the same authentication mechanism and the same business layer, so you can start building new pages in DotVVM or slowly rewrite the old ones as you go. After some time, you might get rid of all Web Forms pages and migrate to the latest version of .NET easily, because DotVVM will always support the newest versions of .NET.