Migrating web apps with Wisej.NET – an overview for software devs


Modernising existing applications is a common challenge in software development. Many organisations still rely on legacy desktop or web technologies like Windows Forms or ASP.NET Web Forms. Rewriting these applications from scratch can be expensive and time-consuming. Migration tools aim to reduce this effort by incremental modernisation. One such tool is Wisej.NET, a framework designed to transform .NET desktop applications into modern web applications while preserving much of the original architecture. This article provides a technical overview of Wisej.NET and its migration abilities, focusing on how it works and where it can be useful in real-world scenarios.

Legacy enterprise applications often represent many years of accumulated domain logic and UI development. Rewriting them entirely may require substantial resources and introduce new risks. Developers must not only recreate functionality but also redesign UI components, manage state differently, and ensure compatibility with existing backend services. Migration frameworks attempt to bridge the gap between legacy application models and modern web architectures. Wisej.NET approaches this problem by extending the programming model familiar to Windows Forms/WPF developers and adapting it to the web environment. Instead of treating the browser as a separate application layer, Wisej.NET provides a server-centric development model where business logic continues to run on the server while the browser primarily acts as a rendering client.

Wisej.NET: An overview

Wisej.NET is a .NET framework that lets developers build web applications using concepts similar to Windows Forms development. It provides a set of UI controls, event handling mechanisms, and layout systems that resemble desktop development patterns. From a technical perspective, Wisej.NET applications run on ASP.NET and communicate with the browser through an asynchronous protocol. The client side renders UI components using JavaScript, while most application logic remains on the server. Key characteristics include:

  • Server-side UI logic
  • Stateful component model
  • Event-driven programming
  • Reusable Windows Forms patterns.

The design allows developers to reuse existing code structures and development practices. To better understand how Wisej.NET supports migration, it is useful to examine its typical migration workflow.

Migration approach

One of Wisej.NET’s main use cases is the migration of Windows Forms (or WPF) applications to the web. Instead of rewriting UI logic completely, developers adapt the application to the Wisej.NET control set and runtime environment.

The migration process typically includes the following steps:

  1. Project conversion: A new Wisej.NET project is created in a .NET solution. Existing code from the Windows Forms project – like business logic and data access layers – can usually be reused with minimal changes
  2. Control replacement: Windows Forms controls are replaced with their Wisej.NET equivalents. Although many APIs are similar, developers should still review differences in behaviour and supported properties.
  3. Event handling: Wisej.NET retains the event-driven programming model used in desktop applications. Button clicks, UI updates, and other interactions trigger server-side events. The pattern remains largely unchanged during migration, which reduces the learning curve for developers familiar with Windows Forms.
  4. Web-specific adaptations: Certain aspects of desktop applications require adjustment for the web environment, including session management, concurrent users, responsive layouts, browser compatibility

Wisej.NET provides mechanisms for handling these concerns, but developers should still review architectural assumptions made in the original application.

Architecture and communication model

Wisej.NET uses a server-centric architecture with asynchronous communication between the client and server (Figure 1).

Figure 1: Architecture of Wisej.NET. Source: https://wisej.com/.

When a user interacts with a UI component in the browser, the event is transmitted to the server. The server processes the event and sends back UI updates, which the client applies dynamically. This model is similar to traditional desktop event handling but introduces network latency considerations. Wisej.NET minimises overhead by transmitting only incremental UI changes not performing full page reloads.

Internally, the framework relies on:

  • ASP.NET hosting
  • WebSocket or AJAX communication
  • JavaScript-based UI rendering.

Because UI state is maintained on the server, developers can work with familiar object models instead of managing complex client-side state.

Typical uses

Wisej.NET is particularly useful in scenarios where organisations need to modernize existing .NET applications without completely rebuilding them. A common example is the migration of large Windows Forms-based enterprise systems. Many companies rely on such applications for internal processes, and these systems often contain complex user interfaces and years of accumulated business logic. Reimplementing them with modern web frameworks would require development effort, whereas Wisej.NET allows much of the existing structure to be preserved.

Another frequent use case is the conversion of internal desktop tools into web-based applications. In many organisations, specialised utilities were originally developed for local use on individual machines. By migrating these tools with Wisej.NET, they can be made accessible through a browser and deployed centrally without requiring installation on every workstation.

Wisej.NET is also suitable for extending legacy applications with web access or supporting gradual modernisation strategies. In such cases, preserving the existing architecture and codebase can be more efficient and less risky than developing an entirely new system from scratch.

More information about the Wisej.NET framework is available at https://wisej.com/. A trial version and a Community Edition can also be downloaded there. Additional examples of successful implementations can be found at https://madewithwisej.com/.