Modern and professional development of client-server and mobile applications | ReactiveUI

From my experience the number of new client-server applications has decreased significantly in recent years, as the market prefers to invest in web solutions.

By client-server applications I mean applications that require a client installed on the computer, which accesses data provided by a server (database).
A typical example are accounting or management applications, which until a few years ago normally accessed a database server on the LAN (local network).
Examples of technologies that are used, in the Microsoft environment in which I specialize, are Microsoft Windows Forms (WinForms) and Microsoft Windows Presentation Foundation (WPF), built on .NET framework.

But why develop a client-server and not a web application?
For anyone who has tried to implement a professional management system, it is clear that web applications, even if we use the latest technologies such as Angular, React, Vue, etc, are very expensive to build and maintain, moreover the UX is very limited, as it is very difficult to create efficient and compact interfaces, which allow you to easily browse, create, modify data, files, view data analysis, and much more.
Web applications are essential if you need to access our data remotely (via the internet, to understand each other).
Development environments for client-server applications, such as Visual Studio (not Visual Studio Code), have very powerful RAD development tools that with simple Drag & Drop allow you to create interfaces very quickly, allowing us to focus on true business value , that is, implement the domain logic. The resources used for the development of the UI are about 20%, while the remaining 80% for the domain part.
For web applications, on the other hand, the opposite is true: 80% to create html interfaces, which work on every browser, responsive for every screen, which are accessible, and safe.

So in the case of a management software that does not have internet / web access as a requirement, the most efficient and economical thing, especially if we think about the long term, is the creation of a client-server application. But which technologies to choose?
In the case of an enterprise management system where the main requirement is the ease of data entry, and does not affect the graphic aspect, Windows Forms is still the best choice. In the case of more graphic (or multimedia) applications, WPF is the right way.
It should be noted that Windows Forms is not an obsolete technology or that will be abandoned, on the contrary, Microsoft, given the enormous amount of existing applications, and specific Enterprise target, has chosen to completely rewrite both the support in Visual Studio and the Windows Forms engine .

Anyone who has tried to code with these platforms knows that it is very easy to find yourself with a monolith, spaghetti code, and no maintenance options. Fortunately, years ago these platforms were revolutionized with Reactive thinking (RX), which is a mix of concepts of data-driven streams, functional programming (FP), and C #.
At this point the community has made available a framework, ReactiveUI (RxUI), which allows you to write Reactive code ALSO on these platforms. In addition, RxUi is part of the .NET Foundation, with official Microsoft support.
If you’ve heard of Angular and RxJS, yes, it’s the same technology. Basically you can bring your RxJs skills into Windows Forms / WPF.
Furthermore ReactiveUi is ideal for mobile apps (e.g. Xamarin), as it supports many platforms.

The advantage of using Reactive Ui is that ViewModels are fully testable, and allows you to implement View (the Forms) without domain code, but relegating everything to ViewModels only. The code at this point becomes very easy to read, maintain and test!
Being opensource, you can get support from the fantastic community, but also help, for example I personally collaborated to improve Windows Forms examples in their official repo.

Do you want to start a new RxUI project? You absolutely must read the fantastic book “You, I, and ReactiveUI” by Kent Boogaart, which with disarming simplicity will take you to write high quality applications and introduce you to the power of Reactive code. The book uses WPF for examples, but the same concepts apply to Windows Forms and other mobile platforms.

Some links:

Have fun!

Add a Comment

Your email address will not be published. Required fields are marked *