Image for post
Image for post
Photo by Free To Use Sounds on Unsplash

Context

Software development is a chaotic activity. So, applying design patterns wisely will help you to speed up the development process by providing well-proven design paradigms. Basically, design patterns provide reusable solutions for common problems/issues. Besides that, if you use design patterns in your solutions, your source codes will become more flexible, reusable and maintainable.

Anti-patterns are on the opposite side of the design pattern and undesirable. There is another term for Anti-pattern that people usually use called Design Smell.

What are they?

Note: The list below might be not exhaustive. They are just from my point of view. …


Image for post
Image for post
Photo by israel palacio on Unsplash

NOTE: This article is for people that have basic understanding about Microservices Architecture (MSA) and want to deep dive into it. If you are newbie in MSA world, I would like to recommend 2 websites — where you can find everything related to MSA from beginner to advanced level:

https://martinfowler.com/microservices/

https://microservices.io

What is Circuit Breaker?

A circuit breaker is an automatically operated electrical switch designed to protect an electrical circuit from damage caused by excess current from an overload or short circuit. Its basic function is to interrupt current flow after a fault is detected. Unlike a fuse, which operates once and then must be replaced, a circuit breaker can be reset (either manually or automatically) to resume normal operation. …


Image for post
Image for post
Photo by Joe Neric on Unsplash

Introduction

Object-Relational Mapping (ORM) is a technique that lets you query and manipulates data from a database using an object-oriented paradigm. It creates a layer between your application and data source and returns you the relational objects instead of (in terms of c# that you are using) ADO.NET objects. This is the basic thing that every ORM does.

An ORM library is a completely ordinary library written in your language of choice that encapsulates the code needed to manipulate the data, so you don’t use SQL anymore; you interact directly with an object in the same language you’re using. …


Image for post
Image for post
Photo by Alexandre Debiève on Unsplash

Context

Last week, I had a very long discussion with my co-workers around Asynchronous and Parallel Programming during coffee time. Although that is a very old topic, I believe that there are still a lot of confusions between them. That is the reason why I decided to write this article.

Both Asynchronous and Parallel Programming enable us to finish our tasks faster. But how many of you still think that they are the same thing and just different terms?

Let’s walk through this article to find the answer for the question above as well as other questions like “what they are?” and “how to use them in the real example as well as in a .NET …


Image for post
Image for post
Photo by Toby Christopher on Unsplash

In this article, we will talk about the Dependency Inversion Principle (DIP), Inversion of Control (IoC) and Dependency Injection (DI). And then try to create a simple DI implementation with the built-in feature of .NET Core with different ways (Controller Constructor Injection, Controller Method Injection and View Injection).

Note: If you already understand what are Dependency Inversion Principle (DIP) , Inversion of Control (Ioc) and Dependency Injection (DI) then feel free to bypass these sections.

Dependency Inversion Principle (DIP)


Image for post
Image for post
Photo by Yiran Ding on Unsplash

NOTE: This article is for people that have basic understanding about Microservices Architecture (MSA) and want to deep dive into it. If you are newbie in MSA world, I would like to recommend 2 websites — where you can find everything related to MSA from beginner to advanced level:

https://martinfowler.com/microservices/

https://microservices.io


Image for post
Image for post
Photo by Cédric Dhaenens on Unsplash

As a Technical Architect, I always read and try to practice design patterns as well as architectural principles. And martinfowler.com is one of the websites that I regularly visit. To be honest, I’m a big fan of Martin Fowler :). When I first read about CQRS pattern on martinfowler page, 7–8 years ago. My first impressions were very negative — as I had a feeling that CQRS makes applications become over-complex than they need. But I’ve changed my mind since Microservices Architecture and DDD (Domain Driven Design) become increasingly popular. I’ve done 2 projects with CQRS so far.

CQRS Overview


In Part 1, we walked through the importance of logging, especially in MSA and how to implement a meaningful logging system.

In this part, I will show you how to build a logging system in Microservices Architecture with Serilog .NET Core and ELK Stack.

Let’s do it!

Image for post
Image for post
image source: internet

But wait! Serilog and ELK Stack, what are they?

— You can ignore section below if you already know what are they.

Serilog


Have you ever take 6 hours for debugging while only take 6 minutes for coding in order to resolve a bug?

Image for post
Image for post
image source: internet

Or, in a beautiful day, you go to the office, open your laptop, the first thing caught your eye is there are a dozen complaining emails from the customer that related to a broken feature last night. You test that function again, it works well! So, what was exactly going on with the system last night while you were sleeping?


Image for post
Image for post
Photo by Pavan Trikutam on Unsplash

This post will give you an overview of “What is gRPC?”, “Why should we consider moving from Restful API to gRPC?” and “The advantages of using gRPC”, after that we will together create a simple implementation of gRPC with .NET Core 3.x

Introduction

gRPC is an open-source remote procedure call (RPC) framework originally developed by Google in 2015 that can run anywhere. It’s used by developers across many programming languages for modern RPC scenarios. The community and the ecosystem are vibrant and active. For now, gRPC is supporting mostly programming languages like C++, Java (+Android), Objective-C (iOS), Python, Ruby, Go, C#, Node.js …

About

Thanh Le

A Software Technical Architect — Who code for food and write for fun :)

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