Building a Document Manager with ASP.NET Core 2.1

The Document Manager was intended to be a web based application that would allow users to upload documents (reports, spreadsheets etc) and assign subscribers to them. A subscriber would then be able to login to the application and download any documents assigned to them. The premise was to build an application along the lines of a collararative Dropbox.

The entire application was a proof-of-concept for building the next generation fleet management system. The new application would be a replacement for the current one. To ensure that the technical choices we had made were sound, and to reduce the risk to the business, we decided to develop a single module first. If this went well and we were satisfied that the technologies were sound, then we would create the rest of the application.

The technologies we had selected (and therefore used to build the Document Manager) included the following:

- ASP.NET Core 2.1 Razor pages (for the front-end application)
- ASP.NET Web API (for building the RESTful services that would be consumed by the application)
- Azure (for hosting, SQL and blob storage)

The only unknown was the use of ASP.NET Core and Razor pages. We had used the other technologies previously on our mobile apps. We didn’t want to use full blown MVC for this project, as we intended to create a suite of RESTful services to provide the business logic. The architecture was service-oriented-architecture (SOA), so therefore the client application only needed to be a lightweight front-end. Hence we didn’t need anything as complicated as MVC or single-page-application (SPA) for the client application.

With ASP.NET Core 2.0 there comes a project template whereby you can create an application based on Razor pages, without the added complication of MVC. This seemed the perfect fit for our needs. After experimenting with these for a few days they seemed to fit very well with the rest of our architecture.

Part way through the application lifecycle we upgraded from ASP.NET Core 2.0 to 2.1, and upgraded Visual Studio at the same time. Apart from making a minor change to one of our build scripts, this upgrade was seamless and without problems.

We are now nearing completion of this project. We have developed the Minimum-Viable-Product (MVP) as our proof-of-concept. The application allows for the uploading, downloading, editing and deleting of documents. You are able to add / delete the subscribers to a document. Subscribers are notified of their subscription via our email service (so a subscriber is alerted to the fact that they need to login to the application and download a document). There is also administration functionality (maintaining companies, users and roles).

I have found using ASP.NET Core 2.1 in conjunction with Razor pages to have been the perfect choice. ASP.NET Core is an incredibly powerful development platform. The support for AJAX and the Razor page handlers alone make this a fantastic platform. There are multiple ways of achieving the same objective, making it incredibly flexible.

I am very pleased with how the project went. The technical choices were justified and sound, and we are now extremely confident of building out the rest of the next generation fleet management software using these technologies.

A father, cyclist, vegetarian, atheist, geek and multiple award winning technical author. Loves real ale, fine wine and good music. All round decent chap.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store