Modernizing existing applications is a common challenge in software development. Many companies still rely on outdated desktop or web technologies such as 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 through gradual modernization. One such tool is Wisej.NET, a framework designed to transform .NET desktop applications into modern web applications while retaining much of the original architecture. This article provides a technical overview of Wisej.NET and its migration capabilities, focusing on how it works and where it can be useful in real-world scenarios.
Older enterprise applications often represent many years of accumulated domain logic and UI development. Rewriting them completely can require significant resources and introduce new risks. In addition to rebuilding functionality, developers must 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 addresses 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 the 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 allows developers to build web applications using concepts similar to Windows Forms development. It provides a set of UI controls, event handling mechanisms, and layout systems similar to desktop development patterns. From a technical perspective, Wisej.NET applications run on ASP.NET and communicate with the browser using an asynchronous protocol. The client side renders UI components using JavaScript, while most of the application logic remains on the server. Key features 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 helpful to examine the typical migration workflow.
Migration approach
One of the main use cases of Wisej.NET is migrating Windows Forms (or WPF) applications to the web. Instead of completely rewriting the UI logic, developers adapt the application to the Wisej.NET control set and runtime environment.
The migration process typically includes the following steps:
- Project implementation: A new Wisej.NET project is created in a .NET solution. Existing code from the Windows Forms project – such as business logic and data access layers – can usually be reused with minimal changes
- Exchange of control: Windows Forms controls are replaced with their Wisej.NET equivalents. Although many APIs are similar, developers should still examine differences in behavior and supported properties.
- Event handling: Wisej.NET maintains 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, reducing the learning curve for developers familiar with Windows Forms.
- Web-specific adjustments: Certain aspects of desktop applications require adaptation to the web environment, including session management, concurrent users, responsive layouts, and browser compatibility
Wisej.NET provides mechanisms to address these concerns, but developers should still review the architectural assumptions made in the original application.
Architecture and communication model
Wisej.NET uses a server-centric architecture with asynchronous communication between client and server (Figure 1).
Figure 1: Wisej.NET architecture. 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 that the client applies dynamically. This model is similar to traditional desktop event processing, but includes network latency considerations. Wisej.NET minimizes overhead by only pushing incremental UI changes and not performing full page reloads.
Internally the framework is based on:
- ASP.NET hosting
- WebSocket or AJAX communication
- JavaScript based UI rendering.
Because UI state is managed on the server, developers can work with familiar object models instead of having to manage complex client-side state.
Typical uses
Wisej.NET is particularly useful in scenarios where companies need to modernize existing .NET applications without rebuilding them from scratch. A common example is migrating large Windows Forms-based enterprise systems. Many companies rely on such applications for internal processes, and these systems often contain complex user interfaces and business logic accumulated over years. Reimplementing them using modern web frameworks would require a development effort, while Wisej.NET allows much of the existing structure to be retained.
Another common use case is converting internal desktop tools into web-based applications. In many organizations, specialized utilities were originally developed for local use on individual machines. By migrating these tools with Wisej.NET, they can be accessed through a browser and deployed centrally without requiring installation on each workstation.
Wisej.NET is also suitable for adding web access to legacy applications or supporting incremental modernization strategies. In such cases, maintaining the existing architecture and codebase can be more efficient and less risky than developing an entirely new system from scratch.
For more information about the Wisej.NET framework, see https://wisej.com/. A trial version and a community edition can also be downloaded there. You can find further examples of successful implementations at https://madewithwisej.com/.