Since my last article I’ve spent some considerable time researching various technologies with a view to deciding which ones the development team will use for the development of the next version of the fleet management web application. The current fleet management web application is somewhat past its sell by date and in need of some fresh blood in the form of shiny new technology.
Many of the technologies we intend to use are already in place.
- We want to build a suite of RESTful services using ASP.NET Web API so that we can reuse the services in other applications such as mobile applications. These will be written using C#.
- We will use an Azure Service Bus for all updates where applicable and necessary. We will decide which ones fit the criteria on a case-by-case basis.
- Images used by the Document Manager (think of a fleet management version of Dropbox) will use Azure Blob Storage. There will be a blob container for each client who uses the web application so as to keep their documents completely separate from each other.
- All relational data will use Azure SQL storage.
- Authentication processes (signup / signin / forgot password) will use Azure Active Directory Business-2-Consumer (or Azure AD B2C for short). This is a new technology we haven’t used before. Rather than implement our own authentication code (which has nothing to do with fleet management) we will use the Azure offering instead. This gives us huge security benefits. Our web app will be secured by the vastly superior Azure infrastructure which already authenticates billions of logins on a daily basis as part of Office365. It also comes with analytics to monitor unusual login activity such as login attempts during unusual parts of the day. These rules can be fine tuned via AI to provide ever more powerful security by learning what constitutes an invalid login. We get full replication of our users across multiple geolocations for failover and business continuity. This scale of security gives us peace of mind that our application will be in safe hands. To develop this in-house would be astronomically expensive, yet is highly affordable using Azure.
The missing piece of the jigsaw was what technology we were going to use to build out the front-end. We looked at React, and in particular Angular. We spent some considerable time looking at Angular in fact. A huge variety of different types of application have been built using it, including data-entry web apps similar to our own. In the end it didn’t really fit our current technology stack, and I wasn’t particularly impressed with the clustermess that is npm. For all of its imperfections and foibles, I think nuget is the better package manager, and versioning the various pieces of the application under source control (Team Foundation Services 2015) would fall into my area of responsibility.
I suggested building the front-end using Razor. I had already developed a full templating engine using Razor for the mobile app, so I was familiar with using Razor syntax. When we looked into the current .NET stacks available, we weighed up the pros and cons of whether to use ASP.NET Core 2.0. We had read some very positive reviews and watched plenty of webinars that sold us on using ASP.NET Core 2.0. It was Microsoft’s latest, bleeding edge framework, and contained some fantastic new features.
One of these new features was the RazorPages project. This is a new project template that comes with ASP.NET Core 2.0 and allows for the development of building front-end applications without having to reply on the scaffolding of MVC. RazorPages are controller-less Razor pages and are very flexible and lightweight and exactly what we were looking for.
I’m excited by the technology stack that we are using. Some of the decisions are old friends that we have used before (ASP.NET Web API, Azure SQL and Blob storage for example), and some are friends in waiting (Azure AD B2C and ASP.NET Core 2.0 for example). I’ll write more articles about the various technologies as I get my hands dirty with them. At this poont in time however, I can honestly say that we have chosen best-of breed, industry best, (b)leading edge technologies for our next generation of applications. I’m genuinely excited to be workig as a software developer right now