Microservices Architecture - Basic Concept

Microservices Architecture - Basic Concept

Microservices have emerged as a popular architectural paradigm in modern software development, addressing the limitations of traditional monolithic applications. This article will explore what microservices are, their evolution from monolithic and multi-tier systems, their benefits, and the challenges associated with them.

Read more
How to use Facade Design Pattern

How to use Facade Design Pattern

The Facade Design Pattern is a structural design pattern that provides a simplified interface to a complex subsystem. It hides the complexities of the underlying system by providing a single unified interface, making it easier to interact with the system as a whole.

Read more
Kafka - Popular Use Cases

Kafka - Popular Use Cases

1. Introduction to Apache Kafka

  • Kafka started as a tool for log processing at LinkedIn.
  • It has evolved into a versatile distributed event streaming platform.
  • Its design utilizes immutable append-only logs with configurable retention policies, making it useful beyond its original purpose.
Read more
C# Record vs. Class: Key Differences and Best Use Cases

C# Record vs. Class: Key Differences and Best Use Cases

When developing in C#, choosing between records and classes depends on the behavior and design of your data structures. Let’s explore their key differences, along with some practical examples.

What Are C# Records?

Records were introduced in C# 9.0 as a way to define immutable, data-centric types. Records focus on representing data rather than functionality.

Read more
Clean Architecture with ASP.NET Core 8 - Part 1

Clean Architecture with ASP.NET Core 8 - Part 1

In today’s fast-paced software development environment, the longevity and maintainability of applications are paramount. This is where Clean Architecture comes into play, especially when implemented within ASP.NET Core 8. By prioritizing a separation of concerns, this architectural style ensures that an application’s core business logic remains unaffected by external dependencies such as databases and user interfaces.

Read more
Understanding Async and Await in C# - A Deep Dive into Modern Asynchronous Programming

Understanding Async and Await in C# - A Deep Dive into Modern Asynchronous Programming

Asynchronous programming has become a cornerstone of modern software development, enabling applications to perform time-consuming tasks without blocking the main thread. In C#, the async and await keywords are pivotal in simplifying asynchronous programming. This blog post provides a comprehensive explanation of these features, including a step-by-step guide on implementing a simple thread pool, using AsyncLocal and ExecutionContext, and creating custom task-like constructs. These insights are ideal for developers looking to enhance their understanding and mastery of asynchronous operations in C#.

Read more
Exploring Locking and Concurrency Control in .NET

Exploring Locking and Concurrency Control in .NET

Locking and concurrency control are essential components in .NET 6, aiding developers in managing how multiple threads access shared resources. These mechanisms prevent data corruption and ensure the correct execution of concurrent operations. This guide delves into the various locking strategies that .NET offers, providing practical examples to illustrate their applications.

Read more
GraphQL adoption patterns

GraphQL adoption patterns

GraphQL is a query language and runtime designed by Facebook in 2012 and publicly released in 2015. It has gained widespread popularity in recent years, with many companies adopting it as their primary API architecture. It is a query language and runtime that allows clients to request data from servers using a unified interface. One of the reasons for its popularity is its flexibility, which allows developers to implement it in different ways depending on their use cases. In this blog post, we will explore four common GraphQL adoption patterns: client only, backend for frontend, the monolith, and multiple overlapping graphs.

Read more
GitOps and ArgoCD

GitOps and ArgoCD

What is GitOps?

GitOps is a modern approach to software delivery that streamlines the process of deploying and managing applications by leveraging the power of Git and automation tools. At the heart of GitOps is the concept of “declarative infrastructure,” which means that the desired state of the infrastructure is defined in a declarative way, and the system automatically ensures that the actual state matches the desired state.

Read more
How to limit number of threads in c#

How to limit number of threads in c#

I often use SemaphoreSlim which is a useful utility in .Net and support async await. Below are simple codes which use an extension to ensure that the limited number of threads.

Read more