Common frameworks, libraries and design patterns I use

Clean architecture and CQRS for backend

I have worked with projects that use the multi-layer architecture, as well as the clean architecture. I like the the clean architecture better because it naturally helps to reduce the couplings between the layers and has more emphasis on the domain. If you are not familiar with the clean architecture, checkout some of the links under the Reference section.

Angular and Bootstrap for front-end

Angular provides a standard way to reuse codes and layouts through components and modules. For example, suppose I need to style the headers of a page. In angular, I can implement the styling and rendering logic as part of a component. I can reuse the component wherever I need to display the headers.

Entity Framework Core (EF Core) and Dapper for data access

In projects i have worked on, EF Core is the standard library we use for accessing data in a relational database. Using EF Core, you can model the tables and relationships in the database in C#, and the framework takes care of converting the data from the database into objects and vice versa. EF Core and LINQ enable you to build database agnostic applications. In other words, you don’t need to do change much of your codes when migrating from one database provider to another. This is assuming you don’t use vendor specific query languages like Oracle SQL or Microsoft T-SQL.

Oidc-client-js and MSAL for .NET for security

Oidc-client-js is a javascript library for front-end, browser based applications to obtain access tokens to call backend APIs. I have used the framework to provide sign in functionalities in angular applications using both the implicit flow and authorization code flow with proof key for code exchange (PKCE). I have written a few blog posts sharing my experience using the library. However, this library is no longer being maintained. In a project I’m working on, I’m switching to MSAL for angular.

// security configs for validating an access token coming from the 
// client application.
services.AddMicrosoftIdentityWebApiAuthentication(Configuration, configSectionName: "AADB2C");
// for validating B2C token coming from angular app.
"AzureAdB2C": {
"Tenant": "*******",
"ClientId": "b9deba45-****-****-****-************",
"Policy": "B2C_1_a_signup_signin",
"Scope": "AccessAsUser"
},

References

Common web application architectures

--

--

Backend developer in .NET core. I enjoy the outdoor, hanging out with good friends, reading and personal development.

Love podcasts or audiobooks? Learn on the go with our new app.

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
Tai Bo

Tai Bo

Backend developer in .NET core. I enjoy the outdoor, hanging out with good friends, reading and personal development.