Introduction to Wisej.NET

by Gabriele del Giovine, translated by Julie Hirt

1.1 What is Wisej.NET?

Wisej.NET is a set of tools, integrated into the Microsoft ASP.NET application architecture and into the Microsoft Visual Studio Visual Development Environment. Its main target is the development of Line of Business (LOB) Web applications at the Enterprise level. Wisej.NET applications are real time, highly dynamic and adhere to the Responsive Web Application (RWA) and Progressive Web Application (PWA) models.

1.2 Supported Architectures

The development environment is Microsoft Visual Studio for Windows with .NET Framework 4.8 and .NET Core 6+. Therefore the deployment includes operating systems such as Windows, Linux, MacOS, Raspberry Pi OS, for execution on the server side and Windows, Linux, MacOS, iOS and Android systems for execution on the web browser client side with the ability to interface with the client's hardware.

A project can be compiled simultaneously for multiple .NET targets, and conditional compilation criteria can be used to differentiate code based on the target.

Deploying applications in Docker containers is supported through the automated creation of a dockerfile.

From the point of view of the client, the applications work with all major browsers without requiring the installation of add-ons. The supported browsers are the following:

  • Microsoft IE 11

  • Microsoft Edge

  • FireFox

  • Google Chrome

  • Apple Safari

  • Opera

1.3 How it works

Wisej.NET has two main components that interact with each other. These components are the server part of Wisej.NET, consisting of .NET components, and the client part, consisting of JavaScript components executed within the browser.

The server part contains all the code that governs objects such as Application, Session, Authentication, Load Balancing, Application Logic, Data Access and interaction with all other systems related to the application. It is therefore partially similar to all the classic concepts that are at the basis of any web application, regardless of the development paradigm used. Where Wisej.NET diverges from some of the paradigms for the development of Web applications in vogue at the moment is the fact that Wisej.NET allows you to have all the control logic, the presentation logic and obviously the low-level logic for accessing data on the server side. The server is any server capable of executing .NET code. In Windows the server of choice is IIS.

The client part contains the UI components, page management components, and the communication components that control the communication between the page containing the UI and the server. This two-way and real-time communication uses various communication technologies depending on the capabilities of the client browser and any limits imposed by the security and traffic control systems. All traffic is http/https and native WebSocket (if supported by the browser and the server.)

It is important to note that Wisej.NET exchanges only the messages necessary for the management of the various UI components within the client browser. Therefore a Wisej.NET client that manages the display of data in a database table will never receive the underlying dataset or the endpoints of any REST/SOAP services that provide access to the data. However, it is always possible to inject JavaScript code into the HTML page at the page or single UI component level and interact with third-party HTML/ASP.NET/JavaScript components present in the page or in non-Wisej.NET pages present in the context of the application.

Another advanced functionality made available by Wisej.NET is the capability to invoke .NET functions present on the server side directly from a JavaScript client by decorating this function with the appropriate attribute. It also allows .NET code to invoke JavaScript functions on the client side.

In terms of scalability and availability, Wisej.NET, being an ASP.NET server-side application, inherits all the characteristics of .NET and the possibility of integrating any mechanisms developed for this purpose in .NET. Wisej.NET, however, offers the possibility to set some threshold values ​​related to parameters such as maximum number of sessions, allocated memory, maximum CPU usage and response time. These values can be used to test the server's ability to allocate a new session based on the current workload before the server becomes overloaded. This unique feature allows a public load balancer to determine which node of the NLB cluster is best suited to take on the new session.

1.4 Development Paradigm

The development paradigm used by Wisej.NET is probably the feature that most differentiates this framework from the majority of traditional HTML/JS/CSS web frameworks based on templating engines (Blazor, Angular, React, ASP.NET MVC, PHP, JSP).

A Wisej.NET application is a Single Page Application (SPA) where all the UI elements are JavaScript components and all the logic is handled by the corresponding .NET components on the server side. It is, in a way, similar to Java’s Vaadin Framework and Eclipse Rapid Application Platform.

Wisej.NET applications are also real-time, where the server can push updates to the browser at any time, and are highly dynamic: applications can create and manage all components at runtime and don’t have to rely on rigid preconfigured HTML templates.

The main difference is that Wisej.NET, being a tool for developing LOB applications that by their nature must follow the PWA model, fills a gap common to many traditional template-based web development tools: the lack of an accurate design surface which allows for simple event management. Wisej.NET's solution is to adopt the same paradigm used in the development of Windows Forms, WPF or Xamarin applications by reusing the same UI design and coding methods: C# or VisualBasic for business logic and visual logic on the server, and JavaScript for the client side components.

The advantages of using this approach are many:

  • The application remains consistent in terms of language, code management, debugging and deployment, including the use of Docker containers and environments on Microsoft Azure.

  • The types of files are reduced to the essential minimum, greatly facilitating the management of the source code and the deployment.

  • The application can be installed on a variety of operating systems and hardware platforms without having to install special runtimes.

  • The architect is free to use the architectural model he deems most suitable.

  • It is possible to convert developers with a desktop development background in an extremely fast and productive way.

  • Does not require knowledge of JavaScript client development frameworks.

  • Does not require specific knowledge of HTML, CSS and other web page management languages.

  • It is possible to reuse most of the existing back-end code, including transactional data access, without having to create large sets of REST/SOAP endpoints.

  • It is possible to reuse almost totally and with very little effort existing WinForms applications including the forms themselves (in a Windows Forms project that does not use third-party components, the conversion work comes down to changing the System.Windows.Forms namespaces to Wisej.Web.)

  • Includes a large library of advanced controls and extensions. Many of the extensions are available in source format so that they can be adapted to specific needs. These extensions allow you to interact with the client's local hardware (Geolocation, Cameras, sound, local storage), cloud services (GoogleMaps, Amazon S3), or interact with third-party ASP.NET/JavaScript component libraries (SyncFusion, Infragistics, Kendo, DevExtreme).

Last updated


© Ice Tea Group LLC, All Rights Reserved.