For the last 9 months the development team at eBMS, including myself, have been locked in a room working hard on an important project. We have been re-architecting, rebuilding and updating the Nimblex platform.
Announcing Nimblex 6
Nimblex 6 represents hundreds of hours of work over the last 9 months and is a major improvement to the underlying platform software of your Nimblex systems.
Why are we making this change?
Nimblex 5 is a very sophisticated application. It is built upon .NET Framework 4.7, ASP.NET Web Forms, jQuery and a number of other technologies. We have found that we are reaching the limits of what these frameworks can do for us and find that more and more we have to work ‘around’ the tools, rather than ‘with’ them.
The current architecture of Nimblex has not fundamentally changed since 2011, and in the intervening 9 years there have been exciting new technologies developed and (crucially) tested in the marketplace. We think now is the right time to take advantage of this.
What will change?
The Nimblex web application has been rewritten from the ground up targeting ASP.NET Core and React. The engine-room of the application is functionally the same, but has been cleaned and refactored to make it more modular, testable, maintainable and even faster. This allows us to make new development faster, with fewer bugs.
We are planning on updating our supported database and web browser list to remove some of the oldest versions. Nimblex 5 offers support for Internet Explorer 8 and 9 which we feel is no longer sensible to support (Microsoft support for 9 and 10 ended on 31 March 2017). By ending support for these we can devote that effort to building better functionality for our more modern supported browsers.
We are strongly considering dropping support for SQL Server 2008R2. We are aware of a couple of clients still making use of this 11-year-old database server and will make contact to see if we can anticipate an upgrade to a slightly newer version. Support for paging in SQL 2008R2 adds complexity to our database layer that we would love to simplify. (Simplicity = fewer bugs and often better performance).
Why ASP.NET Core?
The .NET Framework came out in 2002. At the time, Java was the clear leader in platforms for enterprise software. .NET initially came in as a Microsoft copy of many of the positive aspects of Java. Over the next 18 years .NET has become, if not the leader, then highly competitive with Java in the application development space. I have found Visual Studio and .NET to be superior in most every way (performance, ease of use, tooling).
ASP.NET Web Forms
ASP.NET was the web framework that was built on .NET. At the time, there was only ASP.NET Web Forms, although some years later came MVC and WebAPI. ASP.NET Web Forms allows us to build a robust application quickly as a small team. The trade off for this was that we had to conform to a structure laid out by the framework, and this resulted in performance costs.
The main cost comes with the ‘Post-back’ model. In ASP.NET Web Forms, most of a pages’ processing on interacting happens at the server, meaning that every time you do something meaningful a package of data has to travel.
Normally the time taken from one end to the other is in the order of tens or low hundreds of milliseconds, and it can feel sluggish. It also introduces a load onto the server each time you do anything.
In the last 10 years the web has grown and flourished, and new web technologies make it more practical than ever to offload some of this work into the browser: which means less waiting for you and less load on your hosting (and therefore overall cheaper hosting).
.NET Core is a successor and replacement for the .NET Framework. .NET Core 1.0 was released in 2016 with limited functionality, as a ‘do over’ for Microsoft and opportunity to take everything they learnt over 14 years of .NET Framework development, and to some extent start again and do it better.
It is anticipated that support for ASP.NET Web Forms will end within the next several years, as there are currently no plans to port it to .NET Core. .NET Framework 4.8 will be the last version released, after which Framework will be replaced with Core completely as “.NET 5” (https://devblogs.microsoft.com/dotnet/introducing-net-5/).
.NET Core has a related web application framework called ASP.NET Core.
ASP.NET core is a modern server-side framework, supporting modern architectural principles, positioning us well for the next several years of growth. In order to take advantage of this, we have had to spend significant time refactoring and reworking our code base.
We are already seeing benefits in terms of agility and maintainability. For some cases where previously development would have taken days, we are now done in hours.
When looking at options for client-side frameworks (this is the part of the application that runs within your browser) we considered:
- How complicated is it to develop in?
- How good is the support from development tools?
- How easy is it to test?
- Can we build complex interactions, without sacrificing maintainability?
- Is the framework tried and true?
- Is the framework undergoing active development (and bugfixes)?
- Will the framework start to fight us? (Our experience in past is that at a certain point we have to start working ‘around’ the framework.)
The key players in web at the moment are (not exhaustive):
(Summaries have been borrowed from each framework’s Wikipedia article.)
- Angular – Angular is a TypeScript-based open-source web application framework led by the Angular Team at Google and by a community of individuals and corporations. (Source)
We chose React.
Our basic reasoning is as follows:
- Angular is very ‘opinionated’ – it provides a lot of functions and wants you to do it ‘its’ way. As we have a mature underlying product we are only interested in the User Interface component, and we’ve had bad experiences when outgrowing a product.
- Vue – The key concern here was the tools. Vue relies on a lot of string magic, which isn’t very visible to static analysis.
- React –
- Very focused on User Interface – our key area
- Quite compatible with tools – we can detect a lot of spelling errors immediately for example
- Considered very fast
With React we can build complex user interfaces very quickly, and they will perform well. This sounds like a win for everyone.
In each post I will try and share something positive I’ve seen in the media about community spirit and caring for each other.
This extraordinary 99 year-old World War II veteran has raised over £27million (as of 21 April 2020) for the NHS by walking around his house 100 times – and counting. https://www.bbc.com/news/uk-england-beds-bucks-herts-52303859
And have a look at this twitter hash_tag of Spaniards in crisis showing appreciation for their healthcare workers: https://twitter.com/hashtag/AplausoSanitario?src=hashtag_click. Similar scenes are playing out around the world as care workers are becoming the heroes at this time.
Take care of yourselves and each other,