<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Deepangshi S.</title>
    <description>The latest articles on DEV Community by Deepangshi S. (@thedsdev).</description>
    <link>https://dev.to/thedsdev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1304670%2F13de4fa5-eb36-463b-a8cd-4630908a74c4.gif</url>
      <title>DEV Community: Deepangshi S.</title>
      <link>https://dev.to/thedsdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thedsdev"/>
    <language>en</language>
    <item>
      <title>Understanding API Authentication in C# : Mastering</title>
      <dc:creator>Deepangshi S.</dc:creator>
      <pubDate>Thu, 08 Jan 2026 08:47:15 +0000</pubDate>
      <link>https://dev.to/thedsdev/understanding-api-authentication-in-c-mastering-4ipn</link>
      <guid>https://dev.to/thedsdev/understanding-api-authentication-in-c-mastering-4ipn</guid>
      <description>&lt;p&gt;An authentication ensures that requests come from trusted users or systems.&lt;br&gt;
Here’s a quick look at some common authentication methods:-&lt;/p&gt;

&lt;h5&gt;
  
  
  i.) Basic Authentication
&lt;/h5&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;HttpClient&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;byteArray&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Encoding&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ASCII&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetBytes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"username:password"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DefaultRequestHeaders&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Authorization&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; 
    &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;AuthenticationHeaderValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Basic"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Convert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ToBase64String&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;byteArray&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://api.example.com/data"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The simplest form username and password encoded in Base64. Best for internal or test APIs, not secure for public use without HTTPS.&lt;/p&gt;

&lt;h5&gt;
  
  
  ii.) Token-Based (JWT) Authentication
&lt;/h5&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;HttpClient&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DefaultRequestHeaders&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Authorization&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; 
    &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;AuthenticationHeaderValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Bearer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"your_jwt_token_here"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://api.example.com/userinfo"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Stateless and scalable, perfect for modern REST APIs.&lt;/p&gt;

&lt;h5&gt;
  
  
  iii.) OAuth 2.0
&lt;/h5&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;HttpClient&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DefaultRequestHeaders&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Authorization&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; 
    &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;AuthenticationHeaderValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Bearer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"access_token_from_oauth"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://api.github.com/user"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Used by platforms like Google, GitHub, and Facebook.&lt;br&gt;
Your app gets an access token after the user grants permission.&lt;br&gt;
Great for third-party integrations and delegated access.&lt;/p&gt;

&lt;h5&gt;
  
  
  iv.) HMAC (Hash-Based Message Authentication Code)
&lt;/h5&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"secretkey"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"GET:/api/data"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;var&lt;/span&gt; &lt;span class="n"&gt;hmac&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;HMACSHA256&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Encoding&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;UTF8&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetBytes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;signature&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Convert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ToBase64String&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;hmac&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ComputeHash&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Encoding&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;UTF8&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetBytes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;)));&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;HttpClient&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DefaultRequestHeaders&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"X-Signature"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;signature&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://api.example.com/data"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Uses a shared secret to hash requests, ensuring data integrity. Best for secure system-to-system communication.&lt;/p&gt;

&lt;h5&gt;
  
  
  What’s your preferred API authentication method?
&lt;/h5&gt;

&lt;h5&gt;
  
  
  Share your thoughts below in &lt;code&gt;comments&lt;/code&gt;👇
&lt;/h5&gt;

</description>
      <category>csharp</category>
      <category>auth</category>
      <category>programming</category>
      <category>learning</category>
    </item>
    <item>
      <title>API Gateway | A Beginners Guide : Mastering</title>
      <dc:creator>Deepangshi S.</dc:creator>
      <pubDate>Mon, 21 Jul 2025 08:28:17 +0000</pubDate>
      <link>https://dev.to/thedsdev/api-gateway-a-beginners-guide-mastering-52l3</link>
      <guid>https://dev.to/thedsdev/api-gateway-a-beginners-guide-mastering-52l3</guid>
      <description>&lt;p&gt;In today’s microservice and serverless world, the &lt;strong&gt;API Gateway&lt;/strong&gt; plays a crucial role as the front door to your backend services. Whether you're building RESTful APIs, GraphQL endpoints, or integrating with third-party services, mastering API gateways is essential for scalable, secure applications.&lt;/p&gt;

&lt;p&gt;What is an API Gateway? 🧐&lt;br&gt;
An API Gateway is a server that acts as an intermediary between clients and backend services. It handles request routing, composition, protocol translation, and often enforces security, rate limiting, and logging.&lt;/p&gt;

&lt;p&gt;Popular API Gateway Tools ⚙️&lt;br&gt;
&lt;strong&gt;🔹AWS API Gateway&lt;/strong&gt;&lt;br&gt;
Ideal for serverless architectures, it easily integrates with AWS Lambda, DynamoDB, and other AWS services.&lt;br&gt;
Supports REST, HTTP, and WebSocket APIs.&lt;br&gt;
Great for building scalable, pay-per-use APIs in the cloud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔹Azure API Management (APIM)&lt;/strong&gt;&lt;br&gt;
Azure API Management (APIM) is a fully managed service that helps you publish, secure, transform, and monitor APIs.&lt;br&gt;
It acts as a gateway between backend services and clients, supporting rate limiting, key validation, and analytics.&lt;br&gt;
Ideal for hybrid cloud environments and enterprise-grade solutions.&lt;br&gt;
Offers a developer portal, policy engine, and version management out of the box.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔹Kong Gateway&lt;/strong&gt;&lt;br&gt;
A fast, scalable, open-source API gateway built for microservice architectures.&lt;br&gt;
Uses Lua-based plugins for custom behavior, with both open-source and enterprise editions.&lt;br&gt;
Easily integrates with Kubernetes and supports service mesh features.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔹NGINX&lt;/strong&gt;&lt;br&gt;
Originally a web server, NGINX also functions as a powerful reverse proxy and load balancer.&lt;br&gt;
Great for high-performance API traffic and static content delivery.&lt;br&gt;
Highly customizable with config files, often used in DevOps pipelines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔹 Ocelot&lt;/strong&gt;&lt;br&gt;
A lightweight, .NET-based API Gateway designed for microservices using ASP.NET Core.&lt;br&gt;
Easy to configure via ocelot.json and perfect for internal routing, rate limiting, and JWT authentication.&lt;br&gt;
Best fit for teams already building with the Microsoft stack.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔹Apigee (by Google Cloud)&lt;/strong&gt;&lt;br&gt;
An enterprise-grade API management platform offering analytics, rate limiting, monetization, and more.&lt;br&gt;
Great for large organizations with complex API lifecycles and governance needs.&lt;br&gt;
Fully managed, but comes at a premium cost.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔹Zuul (Netflix OSS)&lt;/strong&gt;&lt;br&gt;
A Java-based gateway by Netflix, commonly used with Spring Boot apps.&lt;br&gt;
Provides routing, monitoring, security, and resiliency features.&lt;br&gt;
Often used in legacy Spring Cloud microservice setups, but now largely replaced by Spring Cloud Gateway.&lt;/p&gt;

&lt;p&gt;Why Use an API Gateway? 🤔&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Centralized routing&lt;/li&gt;
&lt;li&gt;Authentication &amp;amp; Authorization (OAuth, JWT)&lt;/li&gt;
&lt;li&gt;Rate limiting &amp;amp; throttling&lt;/li&gt;
&lt;li&gt;Caching &amp;amp; load balancing&lt;/li&gt;
&lt;li&gt;Protocol bridging (e.g., HTTP to gRPC)&lt;/li&gt;
&lt;li&gt;Monitoring, logging &amp;amp; analytics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Security in API Gateways 🔐&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API Key validation&lt;/li&gt;
&lt;li&gt;JWT validation&lt;/li&gt;
&lt;li&gt;OAuth 2.0&lt;/li&gt;
&lt;li&gt;IP whitelisting / blacklisting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Real-World Use Cases 💻&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A mobile app using AWS API Gateway with Lambda functions.&lt;/li&gt;
&lt;li&gt;A .NET-based eCommerce system using Ocelot Gateway with microservices.&lt;/li&gt;
&lt;li&gt;A public API platform throttling requests to avoid abuse.&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  Common API Gateway Patterns 📊
&lt;/h5&gt;

&lt;p&gt;i.) Backend for Frontend (BFF)&lt;br&gt;
Tailors APIs for different client apps (mobile, web).&lt;/p&gt;

&lt;p&gt;ii.) Aggregator Pattern&lt;br&gt;
Combines multiple microservice responses into one.&lt;/p&gt;

&lt;p&gt;iii.) Proxy Pattern&lt;br&gt;
Routes directly to backend services without much transformation.&lt;/p&gt;

&lt;p&gt;🔚 Note: An API Gateway isn’t just a router it's the traffic cop, security guard, and translator of your API ecosystem. As your system grows, mastering API gateways helps you scale confidently, stay secure, and serve users reliably.&lt;/p&gt;

&lt;p&gt;💬 Share your experience in the comments! Mention the API Gateway currently in use or suggest a follow-up post on setting up AWS API Gateway, Ocelot, Kong, or any other gateway worth exploring!&lt;/p&gt;

</description>
      <category>api</category>
      <category>learning</category>
      <category>programming</category>
      <category>coding</category>
    </item>
    <item>
      <title>Software Architecture Patterns : Understanding | Mastering</title>
      <dc:creator>Deepangshi S.</dc:creator>
      <pubDate>Fri, 02 May 2025 06:38:57 +0000</pubDate>
      <link>https://dev.to/thedsdev/software-architecture-patterns-understanding-mastering-35k0</link>
      <guid>https://dev.to/thedsdev/software-architecture-patterns-understanding-mastering-35k0</guid>
      <description>&lt;h4&gt;
  
  
  Introduction
&lt;/h4&gt;

&lt;h5&gt;
  
  
  Importance of choosing the right architecture 🤔
&lt;/h5&gt;

&lt;p&gt;Choosing the right software architecture is crucial for building scalable, maintainable, and high-performance applications. A well-structured architecture ensures flexibility, reduces technical debt, and improves development efficiency.&lt;/p&gt;

&lt;h6&gt;
  
  
  Possible Architectural Patterns:
&lt;/h6&gt;

&lt;h5&gt;
  
  
  1.) Microservices Architecture
&lt;/h5&gt;

&lt;p&gt;Microservices Architecture breaks an application into small, independently deployable services that communicate via APIs. It's highly scalable and flexible, allowing each service to use different technologies. However, it introduces complexity in deployment and challenges in maintaining data consistency.&lt;/p&gt;

&lt;p&gt;Example: A ProductService and OrderService built as separate ASP.NET Core Web APIs, each with its own database and deployed independently.&lt;/p&gt;

&lt;h5&gt;
  
  
  2.) Modular Monolith
&lt;/h5&gt;

&lt;p&gt;Modular Monolith is a single-deployment application where the codebase is divided into well-structured, independent modules.&lt;br&gt;
Unlike a traditional monolith, each module has clear boundaries and can evolve independently within the same process.&lt;br&gt;
Use it when you need clean separation of concerns without the complexity of microservices.&lt;/p&gt;

&lt;p&gt;Example: A large enterprise app with multiple business domains managed in separate modules.&lt;/p&gt;

&lt;h5&gt;
  
  
  3.) Monolithic Architecture
&lt;/h5&gt;

&lt;p&gt;Monolithic Architecture is a single, unified codebase where all components (UI, business logic, data access) are tightly integrated.&lt;br&gt;
It’s simple to develop and deploy but can become hard to scale and maintain as the application grows.&lt;br&gt;
It can also be used in a console app for integrating multiple partners, where all integrations and logic reside in the same codebase.&lt;/p&gt;

&lt;p&gt;Example: An ASP.NET MVC project with all logic in one solution and layers (Controllers, Services, Repositories) in the same deployment unit.&lt;/p&gt;

&lt;h5&gt;
  
  
  4.) Service-Oriented Architecture (SOA)
&lt;/h5&gt;

&lt;p&gt;Service-Oriented Architecture (SOA) is a design pattern where independent, reusable services perform specific business functions and communicate over a network, often via APIs or an Enterprise Service Bus (ESB).&lt;br&gt;
Its key principles include service reuse, loose coupling, and standardized communication (usually over HTTP, SOAP, or messaging protocols).&lt;br&gt;
Pros: Reusability, scalability, integration-ready. Cons: Complexity, overhead from ESB, slower performance due to network calls.&lt;/p&gt;

&lt;p&gt;Example: A PaymentService exposes a SOAP/REST API, and a separate OrderService consumes it via HttpClient.&lt;/p&gt;

&lt;h5&gt;
  
  
  5.) Event-Driven Architecture
&lt;/h5&gt;

&lt;p&gt;Event-Driven Architecture enables services to react to events published to a broker (e.g., Kafka, RabbitMQ) rather than being called directly.&lt;/p&gt;

&lt;p&gt;Example: In C#, you might use EventHandler or MediatR for in-process, or Azure Service Bus/Kafka for distributed messaging.&lt;br&gt;
Best for real-time, loosely-coupled systems like banking or IoT; improves scalability but adds complexity in debugging and tracing.&lt;/p&gt;

&lt;h5&gt;
  
  
  6.) Serverless Architecture
&lt;/h5&gt;

&lt;p&gt;Serverless Architecture with AWS Lambda in C# means writing small functions (e.g., in .NET 6) that get triggered by events like API Gateway requests, S3 uploads, or DynamoDB changes. You don’t manage servers—Lambda handles scaling, execution, and availability. It’s perfect for short-lived tasks like processing a payout or sending a notification. &lt;/p&gt;

&lt;p&gt;Example, an AWS Lambda written in C# could handle an API request to validate a payment and store the result in a database, all without provisioning infrastructure.&lt;/p&gt;

&lt;h5&gt;
  
  
  7.) Domain-Driven Design (DDD)
&lt;/h5&gt;

&lt;p&gt;Domain-Driven Design (DDD) focuses on modeling software around the business domain using well-defined structures. In a C# project, DDD helps isolate domain logic into clean, testable components like entities and aggregates. Bounded contexts align well with Microservices, allowing each service to own its domain, while Modular Monoliths use them to structure internal modules. This separation ensures better maintainability and domain integrity as the system scales.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>tutorial</category>
      <category>csharp</category>
    </item>
    <item>
      <title>Day 3: SQL Command Types – DDL, DML, DQL, DCL, TCL : Mastering</title>
      <dc:creator>Deepangshi S.</dc:creator>
      <pubDate>Tue, 04 Feb 2025 07:01:46 +0000</pubDate>
      <link>https://dev.to/thedsdev/day-3-sql-command-types-ddl-dml-tcl-mastering-5a5o</link>
      <guid>https://dev.to/thedsdev/day-3-sql-command-types-ddl-dml-tcl-mastering-5a5o</guid>
      <description>&lt;p&gt;&lt;strong&gt;SQL Command Types&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SQL commands are categorized into five key types based on their functionality:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DDL (Data Definition Language): Manage database structures.&lt;/li&gt;
&lt;li&gt;DML (Data Manipulation Language): Modify and interact with data.&lt;/li&gt;
&lt;li&gt;DQL (Data Query Language): Retrieve data from the database.&lt;/li&gt;
&lt;li&gt;DCL (Data Control Language): Control access to the database.&lt;/li&gt;
&lt;li&gt;TCL (Transaction Control Language): Manage database transaction.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;i.) Data Definition Language (DDL)&lt;br&gt;
Used to define, alter, and remove database structures like tables, schemas, and indexes.&lt;/p&gt;

&lt;p&gt;Key Commands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CREATE: Create new databases, tables, or other objects.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;grade&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;ALTER: Modify existing database objects.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt; &lt;span class="k"&gt;ADD&lt;/span&gt; &lt;span class="k"&gt;COLUMN&lt;/span&gt; &lt;span class="n"&gt;email&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;DROP: Remove database objects permanently.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DROP&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;TRUNCATE: Remove all data from a table but keep its structure.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;TRUNCATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ii.) Data Manipulation Language (DML)&lt;br&gt;
Focuses on inserting, updating, and deleting data in tables.&lt;/p&gt;

&lt;p&gt;Key Commands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;INSERT: Add new data.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;emp_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;department&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Alice'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'HR'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;UPDATE: Modify existing data.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;UPDATE&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="k"&gt;SET&lt;/span&gt; &lt;span class="n"&gt;department&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Finance'&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;DELETE: Remove specific records.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;DELETE&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;iii.) Data Query Language (DQL)&lt;br&gt;
Focuses on retrieving data using the SELECT statement.&lt;br&gt;
Key Command:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SELECT: Fetch data from the database.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;department&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'HR'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;iv.) Data Control Language (DCL)&lt;br&gt;
Used to control access and permissions for the database.&lt;br&gt;
Key Commands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GRANT: Give privileges to users.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;GRANT&lt;/span&gt; &lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="k"&gt;TO&lt;/span&gt; &lt;span class="n"&gt;user1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;REVOKE: Remove privileges from users.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;REVOKE&lt;/span&gt; &lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;user1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;v.) Transaction Control Language (TCL)&lt;br&gt;
Used to manage database transactions, ensuring data consistency.&lt;br&gt;
Key Commands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;COMMIT: Save changes in a transaction.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;COMMIT&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;ROLLBACK: Undo changes made in a transaction.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;ROLLBACK&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;SAVEPOINT: Set a save point to rollback to.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="n"&gt;SAVEPOINT&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;Set&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;save&lt;/span&gt; &lt;span class="n"&gt;point&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt; &lt;span class="k"&gt;rollback&lt;/span&gt; &lt;span class="k"&gt;to&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;SET TRANSACTION: Define transaction properties.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SET&lt;/span&gt; &lt;span class="n"&gt;TRANSACTION&lt;/span&gt; &lt;span class="k"&gt;ISOLATION&lt;/span&gt; &lt;span class="k"&gt;LEVEL&lt;/span&gt; &lt;span class="k"&gt;READ&lt;/span&gt; &lt;span class="k"&gt;COMMITTED&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Challenge for you: High-Earning Employees with Department Insights&lt;/code&gt;&lt;br&gt;
&lt;code&gt;📌 Task:&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Write a single SQL query to:&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Retrieve employee names, their department names, and their salaries.&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Calculate the department-wise average salary.&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Only show employees earning more than the average salary of their department.&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Sort the results in descending order of salary.&lt;/code&gt;&lt;br&gt;
&lt;code&gt;💡 Hint: Use JOIN, GROUP BY, HAVING, ORDER BY, and a subquery.&lt;/code&gt;&lt;/p&gt;

</description>
      <category>sql</category>
      <category>learning</category>
      <category>database</category>
      <category>coding</category>
    </item>
    <item>
      <title>Day 2: SQL Querying Basics - WHERE, ORDER BY, LIMIT, Aggregate Functions, GROUP BY, and HAVING : Mastering</title>
      <dc:creator>Deepangshi S.</dc:creator>
      <pubDate>Fri, 03 Jan 2025 06:31:18 +0000</pubDate>
      <link>https://dev.to/thedsdev/day-2-sql-querying-basics-where-order-by-limit-aggregate-functions-group-by-and-having--483b</link>
      <guid>https://dev.to/thedsdev/day-2-sql-querying-basics-where-order-by-limit-aggregate-functions-group-by-and-having--483b</guid>
      <description>&lt;h5&gt;
  
  
  Introduce advanced querying techniques for filtering, aggregating, and grouping data.
&lt;/h5&gt;

&lt;p&gt;i.) Filtering Data:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use the WHERE clause to filter rows based on specific conditions, like retrieving students with grades above 80.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ii.) Aggregating Data:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use functions like COUNT, SUM, AVG, MIN, and MAX to perform calculations on data, such as finding the total number of students or the average grade.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;iii.) Grouping Data:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use the GROUP BY clause to organize data into groups based on a column, such as grouping students by grade.&lt;/li&gt;
&lt;li&gt;Use HAVING to filter grouped results, like showing only grades achieved by more than two students.&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  Querying Techniques:
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;WHERE Clause:
Filters rows based on conditions.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;grade&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;75&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;ORDER BY Clause: Sorts rows in ascending (ASC) or descending (DESC) order.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;grade&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;LIMIT Clause: Limits the number of rows returned.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt; &lt;span class="k"&gt;LIMIT&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h5&gt;
  
  
  Aggregate Functions:
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;COUNT: Counts the number of rows in a table or meeting a condition.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;total_students&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;SUM: Calculates the total of a numeric column.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;grade&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;total_grades&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;AVG: Computes the average value of a numeric column.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;grade&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;average_grade&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;MIN and MAX: Finds the smallest and largest values in a column.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;MIN&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;grade&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;lowest_grade&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;MAX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;grade&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;highest_grade&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h5&gt;
  
  
  GROUP BY and HAVING:
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;GROUP BY: Groups rows sharing a value in a specified column and applies aggregate functions to each group.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;grade&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;student_count&lt;/span&gt;  
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt;  
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;grade&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;HAVING: Filters grouped data based on conditions (similar to WHERE, but for aggregated results).
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;grade&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;student_count&lt;/span&gt;  
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt;  
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;grade&lt;/span&gt;  
&lt;span class="k"&gt;HAVING&lt;/span&gt; &lt;span class="n"&gt;student_count&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h5&gt;
  
  
  Combining All Techniques:
&lt;/h5&gt;

&lt;p&gt;Show how to use WHERE, ORDER BY, LIMIT, GROUP BY, and HAVING together.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;grade&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;student_count&lt;/span&gt;  
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt;  
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;grade&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;  
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;grade&lt;/span&gt;  
&lt;span class="k"&gt;HAVING&lt;/span&gt; &lt;span class="n"&gt;student_count&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;  
&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;student_count&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;  
&lt;span class="k"&gt;LIMIT&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Challenge for you!&lt;br&gt;
Find the total number of students grouped by grades.&lt;br&gt;
List grades with an average score above 85.&lt;br&gt;
Show the top 3 grades with the most students.&lt;br&gt;
Encourage readers to share their solutions in the comments!&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In the next post, we will dive deeper into SQL commands, including DDL, DML, and more!&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>sql</category>
      <category>dotnet</category>
      <category>database</category>
      <category>coding</category>
    </item>
    <item>
      <title>Day 1: Getting Started with SQL - Basics | Beginners' Guide : Mastering</title>
      <dc:creator>Deepangshi S.</dc:creator>
      <pubDate>Mon, 16 Dec 2024 07:53:59 +0000</pubDate>
      <link>https://dev.to/thedsdev/day-1-getting-started-with-sql-basics-beginners-guide-mastering-4ldn</link>
      <guid>https://dev.to/thedsdev/day-1-getting-started-with-sql-basics-beginners-guide-mastering-4ldn</guid>
      <description>&lt;h4&gt;
  
  
  Introduction to SQL:
&lt;/h4&gt;

&lt;p&gt;SQL (Structured Query Language) is a standard programming language used to manage and manipulate relational databases. It allows users to create, read, update, and delete data efficiently using structured commands.&lt;/p&gt;

&lt;p&gt;SQL is essential because it provides a universal method to interact with databases. It ensures data is stored, retrieved, and maintained systematically, enabling consistency, scalability, and security in managing vast amounts of information.&lt;/p&gt;

&lt;h5&gt;
  
  
  Overview of SQL Use Cases in Real-World Applications
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Data Analysis: Querying and analyzing data in business intelligence tools.&lt;/li&gt;
&lt;li&gt;Web Applications: Storing and retrieving user data for e-commerce, social media, etc.&lt;/li&gt;
&lt;li&gt;Finance: Managing transactions, records, and reports in banking systems.&lt;/li&gt;
&lt;li&gt;Healthcare: Handling patient records and hospital data securely.
IoT and Sensor Data: Storing and processing large-scale sensor data from devices.&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  Core Database Concepts:
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Database: A collection of organized data stored electronically, allowing easy access, management, and updating.&lt;/li&gt;
&lt;li&gt;Table: A structured format in a database to store data in rows and columns, similar to a spreadsheet.&lt;/li&gt;
&lt;li&gt;Row: A single record in a table, representing one entity or data entry.&lt;/li&gt;
&lt;li&gt;Column: A vertical structure in a table, representing an attribute or field of the data (e.g., Name, Age).&lt;/li&gt;
&lt;li&gt;Primary Key: A unique identifier for each row in a table (e.g., StudentID). It ensures no duplicate rows.&lt;/li&gt;
&lt;li&gt;Foreign Key: A column (or combination of columns) that establishes a relationship between two tables by referencing the primary key in another table.&lt;/li&gt;
&lt;li&gt;Unique Key: A constraint in a database table that ensures all values in the specified column(s) are distinct, preventing duplicate entries. Unlike a primary key, a table can have multiple unique keys, and they can contain NULL values (depending on the database).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Types of databases&lt;/strong&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Relational Databases
&lt;/h5&gt;

&lt;p&gt;Databases that store data in tables with relationships between them, using SQL (e.g., MySQL, PostgreSQL, Microsoft SQL Server, Oracle Database).&lt;/p&gt;

&lt;h5&gt;
  
  
  Non-Relational Databases:
&lt;/h5&gt;

&lt;p&gt;Databases that store data in formats like documents, key-value pairs, or graphs, and are more flexible (e.g., MongoDB, Cassandra, Redis).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First Steps in SQL:&lt;/strong&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  How to Create a Database
&lt;/h5&gt;

&lt;h6&gt;
  
  
  Use the &lt;code&gt;CREATE DATABASE&lt;/code&gt; command to set up a new database.
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;DATABASE&lt;/span&gt; &lt;span class="n"&gt;my_database&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h6&gt;
  
  
  This creates an empty database where you can create tables and store data.
&lt;/h6&gt;

&lt;h5&gt;
  
  
  How to Create a Table
&lt;/h5&gt;

&lt;h6&gt;
  
  
  Define the structure of your data using the &lt;code&gt;CREATE TABLE&lt;/code&gt; command.
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h6&gt;
  
  
  This creates a table named &lt;code&gt;employees&lt;/code&gt; with &lt;code&gt;columns id&lt;/code&gt;, &lt;code&gt;name&lt;/code&gt;, and &lt;code&gt;age&lt;/code&gt;.
&lt;/h6&gt;

&lt;h5&gt;
  
  
  Inserting Your First Record
&lt;/h5&gt;

&lt;h6&gt;
  
  
  Use the &lt;code&gt;INSERT INTO&lt;/code&gt; command to add data into a table.
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  
&lt;span class="k"&gt;VALUES&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'John Doe'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h6&gt;
  
  
  This adds a new row with the specified values to the &lt;code&gt;employees&lt;/code&gt; table.
&lt;/h6&gt;

&lt;h5&gt;
  
  
  Simple Query to Fetch Data
&lt;/h5&gt;

&lt;h6&gt;
  
  
  Use the &lt;code&gt;SELECT&lt;/code&gt; statement to retrieve data from a table.
&lt;/h6&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h6&gt;
  
  
  This retrieves all rows and columns from the &lt;code&gt;employees&lt;/code&gt; table.
&lt;/h6&gt;

&lt;p&gt;&lt;code&gt;Challenge for You!&lt;br&gt;
Create your own table (e.g., books, employees, or anything you like).&lt;br&gt;
Insert at least 3 records into your table.&lt;br&gt;
Use SELECT to display the data.&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In the next post, we will dive deeper into SQL commands, including DDL, DML, and more!&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>sql</category>
      <category>database</category>
      <category>tutorial</category>
      <category>learning</category>
    </item>
    <item>
      <title>Entity Framework Core | Object Relation Mapping | C# | A Beginner's Guide : Mastering</title>
      <dc:creator>Deepangshi S.</dc:creator>
      <pubDate>Thu, 12 Dec 2024 05:04:50 +0000</pubDate>
      <link>https://dev.to/thedsdev/entity-framework-a-beginners-guide-mastering-6e0</link>
      <guid>https://dev.to/thedsdev/entity-framework-a-beginners-guide-mastering-6e0</guid>
      <description>&lt;p&gt;Entity Framework Core (EF Core) is a powerful Object-Relational Mapper (ORM) that simplifies data access in .NET applications. However, without proper optimization, your database queries can become slow and inefficient, impacting overall application performance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Approaches in Entity Framework 💭
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Database-First Approach&lt;/strong&gt;&lt;br&gt;
In a database-first approach to software development, the database schema is designed and created first. This initial database structure serves as the foundation for the application's data layer. Subsequently, the application's code, including models, controllers, and views, is generated or manually written to interact with this predefined database.&lt;/p&gt;
&lt;h4&gt;
  
  
  When to Use Database-First:  🤔
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Legacy Systems: When working with existing databases, the database-first approach is often the most practical choice.&lt;/li&gt;
&lt;li&gt;Team Collaboration: In teams where database designers and developers work independently, a database-first approach can help maintain consistency and alignment.&lt;/li&gt;
&lt;li&gt;Data-Centric Applications: For applications where data integrity and consistency are paramount, a database-first approach can be beneficial.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Code-First Approach&lt;/strong&gt;&lt;br&gt;
In a code-first approach, the development process begins with writing the application code, including the data models. The database schema is then generated based on these models. This approach offers greater flexibility and agility, as changes to the application code can be directly reflected in the database schema.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model-First Approach&lt;/strong&gt;&lt;br&gt;
A model-first approach involves creating a conceptual data model, often using a visual modeling tool like Entity-Relationship diagrams (ERDs). This model serves as the blueprint for both the database schema and the application code. It provides a high-level view of the data and its relationships, making it easier to understand and maintain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hybrid Approaches&lt;/strong&gt;&lt;br&gt;
Many organizations combine elements of these approaches to suit their specific needs. For instance, they might start with a high-level model-first design and then use a code-first approach to implement the details.&lt;/p&gt;
&lt;h4&gt;
  
  
  Key Considerations for Choosing an Approach:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Team Expertise: The skills and preferences of your development team can influence the choice of approach.&lt;/li&gt;
&lt;li&gt;Project Complexity: For complex projects with many data relationships, a model-first approach can be beneficial.&lt;/li&gt;
&lt;li&gt;Agile Development: Code-first and model-first approaches are often more suitable for agile development methodologies.&lt;/li&gt;
&lt;li&gt;Legacy Systems: In cases where you're working with existing databases, a database-first approach might be necessary.&lt;/li&gt;
&lt;li&gt;Data Integrity and Consistency: A model-first approach can help ensure data integrity and consistency across the entire system.&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;
  
  
  Tracking vs No-Tracking Queries in EF Core
&lt;/h5&gt;

&lt;p&gt;EF Core supports two types of queries: &lt;strong&gt;tracking&lt;/strong&gt; and &lt;strong&gt;no-tracking&lt;/strong&gt;. The key difference lies in how EF Core manages changes to the queried entities.&lt;/p&gt;
&lt;h5&gt;
  
  
  Tracking Queries
&lt;/h5&gt;

&lt;p&gt;EF Core keeps track of the changes to entities returned by a query.&lt;br&gt;
Any updates to these entities are automatically detected and saved to the database during SaveChanges().&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;AppDbContext&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;product&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Products&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;FirstOrDefault&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Id&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="n"&gt;product&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Updated Product"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
    &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SaveChanges&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;            
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h5&gt;
  
  
  No-Tracking Queries
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;EF Core does not track the changes to entities returned by the query.&lt;/li&gt;
&lt;li&gt;This is faster and uses less memory, making it ideal for read-only scenarios.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;AppDbContext&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;product&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Products&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AsNoTracking&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
                     &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;FirstOrDefault&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Id&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="n"&gt;product&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Updated Product"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
    &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SaveChanges&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;             
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h6&gt;
  
  
  When to Use 🤔
&lt;/h6&gt;

&lt;ul&gt;
&lt;li&gt;Tracking Queries: Use when you need to modify and save entity changes.&lt;/li&gt;
&lt;li&gt;No-Tracking Queries: Use for read-only operations to improve performance.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>sql</category>
      <category>dotnet</category>
      <category>database</category>
      <category>coding</category>
    </item>
    <item>
      <title>Introduction to Message Brokers: A Beginner's Guide : Mastering</title>
      <dc:creator>Deepangshi S.</dc:creator>
      <pubDate>Mon, 21 Oct 2024 11:46:31 +0000</pubDate>
      <link>https://dev.to/thedsdev/introduction-to-message-brokers-a-beginners-guide-mastering-15ih</link>
      <guid>https://dev.to/thedsdev/introduction-to-message-brokers-a-beginners-guide-mastering-15ih</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;What is a Message Broker?&lt;/strong&gt; 🤔
&lt;/h2&gt;

&lt;p&gt;A Message Broker is an intermediary software that facilitates communication between different systems, services, or applications by transmitting messages from one system to another. It allows distributed systems to interact with each other without requiring direct connections, making it an essential component in modern, decoupled architectures like microservices.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Popular Message Brokers:&lt;/strong&gt; 🌐
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;RabbitMQ&lt;/strong&gt;: A popular open-source message broker known for its reliability and flexibility.&lt;br&gt;
&lt;strong&gt;Apache Kafka&lt;/strong&gt;: A high-performance, distributed streaming platform often used for real-time data processing.&lt;br&gt;
&lt;strong&gt;ActiveMQ&lt;/strong&gt;: An open-source message broker that supports various messaging protocols.&lt;br&gt;
&lt;strong&gt;Azure Service Bus&lt;/strong&gt;: A Microsoft-hosted message broker that integrates with other Azure services.&lt;br&gt;
&lt;strong&gt;Amazon Simple Queue Service (SQS)&lt;/strong&gt;: A fully managed message queue service offered by Amazon Web Services.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;When to Use a Message Broker:&lt;/strong&gt; 📝
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Microservices Architectures&lt;/strong&gt;: Message brokers are essential for communication between microservices.&lt;br&gt;
&lt;strong&gt;Event-Driven Systems&lt;/strong&gt;: When applications need to react to events or changes in data.&lt;br&gt;
&lt;strong&gt;Distributed Systems&lt;/strong&gt;: For communication between components in a distributed system.&lt;br&gt;
&lt;strong&gt;Real-Time Data Processing&lt;/strong&gt;: For processing large volumes of data in real time.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Benefits of Using a Message Broker:&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Decoupling: Applications can communicate without knowing each other's details.&lt;/li&gt;
&lt;li&gt;Asynchronous Communication: Messages can be processed at a later time, improving performance and scalability.&lt;/li&gt;
&lt;li&gt;Reliability: Message brokers can ensure that messages are delivered reliably, even if there are network failures.&lt;/li&gt;
&lt;li&gt;Scalability: Message brokers can handle large volumes of messages and scale horizontally.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Key Components of a Message Broker:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Producer: An application that sends messages to the broker.&lt;/li&gt;
&lt;li&gt;Broker: The central component that receives, stores, and forwards messages.&lt;/li&gt;
&lt;li&gt;Consumer: An application that receives messages from the broker.&lt;/li&gt;
&lt;li&gt;Queue: A data structure that stores messages in a first-in, first-out (FIFO) order.&lt;/li&gt;
&lt;li&gt;Topic: A data structure that allows messages to be broadcast to multiple consumers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How Does a Message Broker Work?&lt;/strong&gt; 📢&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A producer sends a message to the broker.&lt;/li&gt;
&lt;li&gt;The broker stores the message in a queue or topic.&lt;/li&gt;
&lt;li&gt;Consumers can subscribe to the queue or topic to receive messages.&lt;/li&gt;
&lt;li&gt;When a consumer requests a message, the broker delivers it.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>csharp</category>
      <category>dotnet</category>
      <category>backenddevelopment</category>
      <category>programming</category>
    </item>
    <item>
      <title>API Architecture: A Comprehensive Guide to: REST, SOAP, GraphQL, gRPC, and OData</title>
      <dc:creator>Deepangshi S.</dc:creator>
      <pubDate>Tue, 01 Oct 2024 12:13:09 +0000</pubDate>
      <link>https://dev.to/thedsdev/api-architecture-a-comprehensive-guide-to-rest-soap-graphql-grpc-and-odata-37di</link>
      <guid>https://dev.to/thedsdev/api-architecture-a-comprehensive-guide-to-rest-soap-graphql-grpc-and-odata-37di</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction to APIs and Their Importance&lt;/strong&gt; 💡
&lt;/h2&gt;

&lt;p&gt;APIs (Application Programming Interfaces) enable different software systems to communicate and share data, serving as the foundation of modern digital ecosystems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Importance&lt;/strong&gt; 🔍&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;APIs are essential for enabling seamless integration between different systems, fostering innovation, and improving efficiency.&lt;/li&gt;
&lt;li&gt;They allow businesses to scale, automate processes, and create flexible, modular applications that can easily adapt to changing needs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;API types&lt;/strong&gt; 📝
&lt;/h2&gt;

&lt;h2&gt;
  
  
  REST (Representational State Transfer)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;How it works&lt;/strong&gt;: Stateless architecture, resources represented via URLs, and standard HTTP methods (GET, POST, PUT, DELETE).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advantages&lt;/strong&gt;: Simplicity, flexibility, and widespread adoption. Easy to use and integrate with web and mobile applications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use cases&lt;/strong&gt;: Microservices, web applications, mobile apps.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Net.Http&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Threading.Tasks&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Program&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt; &lt;span class="nf"&gt;Main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;HttpClient&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;HttpClient&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"https://jsonplaceholder.typicode.com/posts/1"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Example REST endpoint&lt;/span&gt;
        &lt;span class="n"&gt;HttpResponseMessage&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;IsSuccessStatusCode&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;responseBody&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Content&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ReadAsStringAsync&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;responseBody&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;In this example, HttpClient is used to make a GET request to a REST endpoint.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  SOAP (Simple Object Access Protocol)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;How it works&lt;/strong&gt;: Protocol-based, highly structured, with strong typing and error handling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advantages&lt;/strong&gt;: Built-in security (WS-Security), transactions, and reliability. Strong for enterprise-level, secure applications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use cases&lt;/strong&gt;: Banking, financial services, and enterprise applications requiring robust security.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.ServiceModel&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Program&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;SoapServiceReference&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;MySoapServiceClient&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;MySoapMethod&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Parameter"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Here, we assume you’ve added a SOAP service reference to the project. You’d call the SOAP service’s method like any C# method after referencing the WSDL.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  GraphQL
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;How it works&lt;/strong&gt;: Clients define the structure of the response; allows querying multiple resources in a single request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advantages&lt;/strong&gt;: Flexibility (clients can request exactly what they need), reduced over-fetching, great for nested data structures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use cases&lt;/strong&gt;: Modern applications with complex frontends (like social media apps or e-commerce platforms).&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;GraphQL API Example in C# (Using GraphQL.Client Library)&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;GraphQL.Client.Http&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;GraphQL.Client.Serializer.Newtonsoft&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Threading.Tasks&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Program&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt; &lt;span class="nf"&gt;Main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;GraphQLHttpClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://api.yourapihere/graphql/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;NewtonsoftJsonSerializer&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;

        &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;GraphQLHttpRequest&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;Query&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;@"
            {
                launchesPast(limit: 2) {
                    mission_name
                    launch_date_utc
                }
            }"&lt;/span&gt;
        &lt;span class="p"&gt;};&lt;/span&gt;

        &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SendQueryAsync&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;dynamic&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;In this example, a GraphQL query fetches details of past launches from API.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  gRPC (Google Remote Procedure Call)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;How it works&lt;/strong&gt;: Uses protocol buffers for serialization, with bidirectional streaming support.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advantages&lt;/strong&gt;: High performance, fast communication, and support for multiple languages. Ideal for low-latency, high-throughput systems.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use cases&lt;/strong&gt;: Real-time systems, microservices, IoT devices.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;i.) First, create a proto file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;syntax = "proto3";

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply);
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ii.) Then, the C# client code would look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Grpc.Net.Client&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;GrpcService&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Program&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt; &lt;span class="nf"&gt;Main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;channel&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;GrpcChannel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ForAddress&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://localhost:5001"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Greeter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GreeterClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;channel&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;reply&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SayHelloAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;HelloRequest&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"World"&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
        &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;reply&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;You’d need to generate C# classes from the proto file using protoc or by using the Grpc.Tools NuGet package.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  OData (Open Data Protocol)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;How it works&lt;/strong&gt;: Protocol for building RESTful APIs with querying capabilities similar to SQL, designed to standardize CRUD operations on resources.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advantages&lt;/strong&gt;: Supports filtering, sorting, and querying directly in the URL. Useful for applications that need rich query capabilities.&lt;/li&gt;
&lt;li&gt;Use cases: Enterprise applications requiring complex querying and filtering (e.g., CRM systems).
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Net.Http&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Threading.Tasks&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Program&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt; &lt;span class="nf"&gt;Main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;HttpClient&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;HttpClient&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"https://services.odata.org/V4/(S(readwrite))/TripPinServiceRW/People"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// OData example service&lt;/span&gt;

        &lt;span class="n"&gt;HttpResponseMessage&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;IsSuccessStatusCode&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;responseBody&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Content&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ReadAsStringAsync&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;responseBody&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;This is similar to REST, but the data is structured as OData. In real use cases, you’d use Microsoft.OData.Client for querying entities in a more structured manner.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>backenddevelopment</category>
      <category>dotnet</category>
      <category>programming</category>
      <category>csharp</category>
    </item>
    <item>
      <title>Data Structures in C#: A Beginner's Guide : Mastering</title>
      <dc:creator>Deepangshi S.</dc:creator>
      <pubDate>Tue, 17 Sep 2024 08:27:09 +0000</pubDate>
      <link>https://dev.to/thedsdev/data-structures-in-c-a-beginners-guide-mastering-16ak</link>
      <guid>https://dev.to/thedsdev/data-structures-in-c-a-beginners-guide-mastering-16ak</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;What is Data Structures and Algorithms?&lt;/strong&gt; 🤓
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Data Structures:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A data structure is a way to organize and store data so that it can be accessed and modified efficiently. Think of it as a container for data. There are different types of containers depending on what you want to do with the data (insert, delete, search, etc.).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Algorithms:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An algorithm is a set of steps or instructions designed to solve a specific problem. It’s like a recipe for solving problems using the data stored in data structures.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Types of Data Structures&lt;/strong&gt; 🤔
&lt;/h2&gt;

&lt;p&gt;💡 Let’s start by introducing the main types of data structures:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Primitive Data Structures:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integer
&lt;/li&gt;
&lt;li&gt;long&lt;/li&gt;
&lt;li&gt;Float
&lt;/li&gt;
&lt;li&gt;double&lt;/li&gt;
&lt;li&gt;Character
&lt;/li&gt;
&lt;li&gt;string&lt;/li&gt;
&lt;li&gt;Boolean&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Non-Primitive Data Structures:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Arrays (Static size, same data type)&lt;/li&gt;
&lt;li&gt;Linked Lists (Dynamic size, nodes)&lt;/li&gt;
&lt;li&gt;Stacks (Last In, First Out - LIFO)&lt;/li&gt;
&lt;li&gt;Queues (First In, First Out - FIFO)&lt;/li&gt;
&lt;li&gt;Trees (Hierarchical, like a family tree)&lt;/li&gt;
&lt;li&gt;Graphs (Nodes and edges)&lt;/li&gt;
&lt;li&gt;Hash Tables (Key-value pairs)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Basic Algorithms&lt;/strong&gt; 🧐
&lt;/h2&gt;

&lt;p&gt;There are different types of algorithms you will use in combination with data structures:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Searching algorithms (e.g., Binary Search, Linear Search)&lt;/li&gt;
&lt;li&gt;Sorting algorithms (e.g., Bubble Sort, Merge Sort, Quick Sort)&lt;/li&gt;
&lt;li&gt;Traversal algorithms (for trees and graphs)&lt;/li&gt;
&lt;li&gt;Dynamic Programming (breaking problems into smaller subproblems)&lt;/li&gt;
&lt;li&gt;Greedy Algorithms (making the best choice at each step)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Let’s start with a foundational data structure:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Arrays&lt;/strong&gt; (Static Size, Same Data Type)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An array in C# is a fixed-size, strongly-typed data structure that holds a collection of elements of the same data type. The size is defined when the array is initialized and cannot be changed later.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ArrayExample&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Declaring an array of size 5&lt;/span&gt;
        &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;numbers&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;40&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;50&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;

        &lt;span class="c1"&gt;// Accessing array elements&lt;/span&gt;
        &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Element at index 0: "&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

        &lt;span class="c1"&gt;// Iterating through the array&lt;/span&gt;
        &lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="c1"&gt;// Searching for an element (Linear Search)&lt;/span&gt;
        &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="kt"&gt;bool&lt;/span&gt; &lt;span class="n"&gt;found&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;++)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;$"Element &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s"&gt; found at index &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
                &lt;span class="n"&gt;found&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(!&lt;/span&gt;&lt;span class="n"&gt;found&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Element not found"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Linked Lists&lt;/strong&gt; (Dynamic Size, Nodes)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A linked list consists of nodes where each node contains a data field and a reference to the next node. C# provides a built-in LinkedList class that allows dynamic memory allocation and easy insertion and deletion of nodes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Collections.Generic&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;LinkedListExample&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Initializing a linked list of integers&lt;/span&gt;
        &lt;span class="n"&gt;LinkedList&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;linkedList&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;LinkedList&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;

        &lt;span class="c1"&gt;// Adding nodes (values) to the linked list&lt;/span&gt;
        &lt;span class="n"&gt;linkedList&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddLast&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;linkedList&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddLast&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;linkedList&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddLast&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="c1"&gt;// Iterating over the linked list&lt;/span&gt;
        &lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;linkedList&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="c1"&gt;// Removing a node from the linked list&lt;/span&gt;
        &lt;span class="n"&gt;linkedList&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Remove&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"After removing 20:"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;linkedList&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stacks&lt;/strong&gt; (Last In, First Out - LIFO)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A stack follows the LIFO (Last In, First Out) principle. The most recently added item is the first one to be removed. In C#, the Stack class implements this data structure.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Collections.Generic&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;StackExample&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Initializing a stack of integers&lt;/span&gt;
        &lt;span class="n"&gt;Stack&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;stack&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Stack&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;

        &lt;span class="c1"&gt;// Pushing elements onto the stack&lt;/span&gt;
        &lt;span class="n"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="c1"&gt;// Popping elements (removing from stack)&lt;/span&gt;
        &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Popped: "&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Pop&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;  &lt;span class="c1"&gt;// 30&lt;/span&gt;
        &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Popped: "&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Pop&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;  &lt;span class="c1"&gt;// 20&lt;/span&gt;

        &lt;span class="c1"&gt;// Peeking the top element without removing it&lt;/span&gt;
        &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Top element: "&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Peek&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;  &lt;span class="c1"&gt;// 10&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Queues&lt;/strong&gt; (First In, First Out - FIFO)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A queue follows the FIFO (First In, First Out) principle. The first item added is the first one to be removed. C# provides a Queue class for this purpose.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Collections.Generic&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;QueueExample&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Initializing a queue of integers&lt;/span&gt;
        &lt;span class="n"&gt;Queue&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;queue&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Queue&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;

        &lt;span class="c1"&gt;// Enqueuing elements (adding to the queue)&lt;/span&gt;
        &lt;span class="n"&gt;queue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Enqueue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;queue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Enqueue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;queue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Enqueue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="c1"&gt;// Dequeuing elements (removing from the queue)&lt;/span&gt;
        &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Dequeued: "&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;queue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Dequeue&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;  &lt;span class="c1"&gt;// 10&lt;/span&gt;
        &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Dequeued: "&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;queue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Dequeue&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;  &lt;span class="c1"&gt;// 20&lt;/span&gt;

        &lt;span class="c1"&gt;// Peeking at the front element&lt;/span&gt;
        &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Front element: "&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;queue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Peek&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;  &lt;span class="c1"&gt;// 30&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Trees&lt;/strong&gt; (Hierarchical, Like a Family Tree)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A tree is a hierarchical data structure where each node has zero or more children, with a single root node at the top. The most common type of tree is a binary tree, where each node has at most two children (left and right).&lt;/p&gt;

&lt;p&gt;Here’s a simple implementation of a binary tree in C#:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;TreeNode&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;Value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;TreeNode&lt;/span&gt; &lt;span class="n"&gt;Left&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;TreeNode&lt;/span&gt; &lt;span class="n"&gt;Right&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;TreeNode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="k"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;Value&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="n"&gt;Left&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="n"&gt;Right&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;BinaryTree&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="n"&gt;TreeNode&lt;/span&gt; &lt;span class="n"&gt;Root&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;InOrderTraversal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;TreeNode&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;node&lt;/span&gt; &lt;span class="p"&gt;!=&lt;/span&gt; &lt;span class="k"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nf"&gt;InOrderTraversal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Left&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="nf"&gt;InOrderTraversal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Right&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;TreeExample&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;BinaryTree&lt;/span&gt; &lt;span class="n"&gt;tree&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;BinaryTree&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

        &lt;span class="c1"&gt;// Creating nodes manually&lt;/span&gt;
        &lt;span class="n"&gt;tree&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Root&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;TreeNode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;tree&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Root&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Left&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;TreeNode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;tree&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Root&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Right&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;TreeNode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;tree&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Root&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Left&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Left&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;TreeNode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;tree&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Root&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Left&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Right&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;TreeNode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="c1"&gt;// In-order traversal of the tree&lt;/span&gt;
        &lt;span class="n"&gt;tree&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;InOrderTraversal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tree&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Root&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Graphs&lt;/strong&gt; (Nodes and Edges)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A graph consists of nodes (or vertices) and edges connecting the nodes. Graphs can be directed or undirected. In C#, we can use adjacency lists (using Dictionary&amp;gt;) to represent a graph.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Collections.Generic&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Graph&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Adjacency list representation&lt;/span&gt;
    &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="n"&gt;Dictionary&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;adjacencyList&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Dictionary&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;gt;();&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;AddEdge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;vertex&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;neighbor&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(!&lt;/span&gt;&lt;span class="n"&gt;adjacencyList&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ContainsKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;vertex&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;adjacencyList&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;vertex&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="n"&gt;adjacencyList&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;vertex&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;Add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;neighbor&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;PrintGraph&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;vertex&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;adjacencyList&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;vertex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Key&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="s"&gt;" -&amp;gt; "&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;neighbor&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;vertex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;neighbor&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="s"&gt;" "&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;GraphExample&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;Graph&lt;/span&gt; &lt;span class="n"&gt;graph&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Graph&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

        &lt;span class="c1"&gt;// Adding edges to the graph&lt;/span&gt;
        &lt;span class="n"&gt;graph&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddEdge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;graph&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddEdge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;graph&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddEdge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;graph&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddEdge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;graph&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddEdge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="c1"&gt;// Printing the graph&lt;/span&gt;
        &lt;span class="n"&gt;graph&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;PrintGraph&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hash Tables&lt;/strong&gt; (Key-Value Pairs)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In C#, the Dictionary class implements a hash table. It stores key-value pairs, allowing fast lookups by key.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Collections.Generic&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;HashTableExample&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Creating a dictionary (hash table)&lt;/span&gt;
        &lt;span class="n"&gt;Dictionary&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;hashTable&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Dictionary&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;

        &lt;span class="c1"&gt;// Adding key-value pairs&lt;/span&gt;
        &lt;span class="n"&gt;hashTable&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"apple"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="n"&gt;hashTable&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"banana"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="n"&gt;hashTable&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"orange"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;// Accessing a value by key&lt;/span&gt;
        &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Value associated with 'apple': "&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;hashTable&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"apple"&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

        &lt;span class="c1"&gt;// Iterating through the dictionary&lt;/span&gt;
        &lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;pair&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;hashTable&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;$"&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;pair&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Key&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;pair&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Value&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why Learn DSA?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Efficient code: DSA helps you write code that can solve problems in a more efficient way (faster or with less memory).&lt;/li&gt;
&lt;li&gt;Competitive programming: It’s essential for problem-solving and coding competitions.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>csharp</category>
      <category>dotnet</category>
      <category>backenddevelopment</category>
      <category>programming</category>
    </item>
    <item>
      <title>How RPA Transforms Business Automation and API Integration | Unlocking Efficiency : Mastering</title>
      <dc:creator>Deepangshi S.</dc:creator>
      <pubDate>Thu, 05 Sep 2024 05:25:29 +0000</pubDate>
      <link>https://dev.to/thedsdev/how-rpa-transforms-business-automation-and-api-integration-unlocking-efficiency-mastering-30c2</link>
      <guid>https://dev.to/thedsdev/how-rpa-transforms-business-automation-and-api-integration-unlocking-efficiency-mastering-30c2</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction to RPA:&lt;/strong&gt; What RPA is and its role in business automation.&lt;/p&gt;

&lt;p&gt;Robotic Process Automation (RPA) is a technology that automates repetitive, rule-based tasks by mimicking human interactions with software applications. It enables businesses to streamline processes like data entry, report generation, and system integration without manual intervention.&lt;br&gt;
By automating these tasks, RPA enhances efficiency, reduces human error, and frees up employees for more strategic work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RPA and API Integration Overview:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;RPA bots can automate interactions like logging into applications, copying data, or triggering processes, effectively allowing these systems to communicate with modern platforms that do have APIs, instead of relying on traditional coding.&lt;/p&gt;

&lt;p&gt;For example, if a legacy CRM doesn't offer an API, an RPA bot can extract data through the user interface and pass it to another system’s API, bridging the integration gap without requiring direct API development. This approach lets businesses automate tasks across systems without modifying their existing infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits of RPA:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Cost Savings: &lt;br&gt;
RPA reduces the need for manual labor in repetitive tasks, lowering operational costs. Once set up, software bots work around the clock, handling tasks faster than humans, which translates to significant cost reductions in terms of labor and time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Improved Accuracy:&lt;br&gt;
Bots execute tasks with consistent precision, minimizing human error. This is crucial in processes like data entry or financial transactions, where errors can lead to costly mistakes. RPA ensures that tasks are done correctly every time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Increased Efficiency:&lt;br&gt;
RPA bots can perform tasks much faster than humans, enabling businesses to complete high volumes of work in a shorter time. This leads to quicker task completion and allows employees to focus on more strategic, value-driven activities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scalability:&lt;br&gt;
RPA allows for easy scaling of operations. As business needs grow, more bots can be deployed quickly without the need for additional training or onboarding, unlike human resources.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enhanced Compliance:&lt;br&gt;
Since RPA follows predefined rules, it ensures that tasks are completed according to regulatory standards, reducing compliance risks. This is especially important in industries like finance, healthcare, and legal sectors.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Employee Satisfaction:&lt;br&gt;
By automating repetitive tasks, employees can focus on higher-level, engaging work, which boosts job satisfaction and productivity.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dotnet</category>
      <category>backenddevelopment</category>
      <category>programming</category>
      <category>rpa</category>
    </item>
    <item>
      <title>The Most Commonly Used Design Patterns in .NET Development | Main- CQRS : Mastering</title>
      <dc:creator>Deepangshi S.</dc:creator>
      <pubDate>Thu, 29 Feb 2024 18:17:30 +0000</pubDate>
      <link>https://dev.to/thedsdev/aspnet-web-api-ef-mastery-1o6b</link>
      <guid>https://dev.to/thedsdev/aspnet-web-api-ef-mastery-1o6b</guid>
      <description>&lt;p&gt;&lt;strong&gt;Design patterns in ASP.NET Core&lt;/strong&gt;, like in any software development, can be classified into different types based on their purpose and usage. Here are some common types of design patterns used in ASP.NET Core:&lt;/p&gt;

&lt;p&gt;i.) &lt;strong&gt;Creational Patterns&lt;/strong&gt;: These patterns deal with object creation mechanisms, trying to create objects in a manner suitable to the situation. Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Singleton&lt;/strong&gt;: Ensures a class has only one instance and provides a global point of access to it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Factory Method&lt;/strong&gt;: Defines an interface for creating objects, but lets subclasses alter the type of objects that will be created.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Abstract Factor&lt;/strong&gt;y: Provides an interface for creating families of related or dependent objects without specifying their concrete classes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Builder Pattern&lt;/strong&gt;: Constructs complex objects step by step. It separates the construction of a complex object from its representation, allowing the same construction process to create different representations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ii.) &lt;strong&gt;Structural Patterns&lt;/strong&gt;: These patterns deal with object composition, i.e., they help in building large structures of objects. Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Adapter&lt;/strong&gt;: Allows objects with incompatible interfaces to collaborate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decorator&lt;/strong&gt;: Adds behavior to objects dynamically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Facade&lt;/strong&gt;: Provides a simplified interface to a complex subsystem.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bridge Pattern&lt;/strong&gt;: Decouples an abstraction from its implementation, allowing both to vary independently. It is often used when both the abstraction and its implementation need to be extensible.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;iii.) &lt;strong&gt;Behavioral Patterns&lt;/strong&gt;: These patterns are concerned with algorithms and the assignment of responsibilities between objects. Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Observer&lt;/strong&gt;: Defines a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strategy&lt;/strong&gt;: Defines a family of algorithms, encapsulates each one, and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chain of Responsibility&lt;/strong&gt;: Avoids coupling the sender of a request to its receiver by giving more than one object a chance to handle the request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Command Pattern&lt;/strong&gt;: Encapsulates a request as an object, allowing for parameterization of clients with different requests, queuing of requests, and logging of requests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State Pattern&lt;/strong&gt;: Allows an object to alter its behavior when its internal state changes, providing a more object-oriented way to manage state-dependent behavior.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memento Pattern&lt;/strong&gt;: Captures and externalizes an object's internal state so that the object can be restored to this state later without violating encapsulation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;iV.) &lt;strong&gt;Architectural Patterns&lt;/strong&gt;: These patterns are at a higher level of abstraction and deal with overall application architecture. Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model-View-Controller (MVC)&lt;/strong&gt;: Separates an application into three main components: Model, View, and Controller.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model-View-ViewModel (MVVM)&lt;/strong&gt;: Similar to MVC, but tailored for data binding in client-side applications.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dependency Injection (DI)&lt;/strong&gt;: A technique where an object receives its dependencies from an external source rather than creating them itself, promoting loose coupling and easier testing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/architecture/patterns/cqrs" rel="noopener noreferrer"&gt;CQRS (Command Query Responsibility Segregation)&lt;/a&gt;&lt;/strong&gt;: Separates the read and write operations of a data store into separate paths, improving scalability and performance.&lt;br&gt;
Repository Pattern: Mediates between the domain and data mapping layers using a collection-like interface for accessing domain objects.&lt;br&gt;
Advantage:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Independent Scaling.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Optimizing Data Transfer object provides separation of &lt;br&gt;
concern.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;High scalability.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MediaTr pattern- Mediatr pattern is a behavioral pattern &lt;br&gt;
that let us reduce dependencies between the object by &lt;br&gt;
restricting direct communication between the object and the &lt;br&gt;
forces them to collaborate only via a mediatr object.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Repository Pattern&lt;/strong&gt;: Mediates between the domain and data mapping layers using a collection-like interface for accessing domain objects. It provides a more object-oriented way to access data, decoupling the application from the specifics of the data storage implementation.&lt;br&gt;
-The repository of the service used to access the data from &lt;br&gt;
the database table.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;v.) &lt;strong&gt;Other Patterns:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Circuit Breaker Pattern&lt;/strong&gt;: Helps in handling faults that might take a variable amount of time to fix when connecting to a remote service or resource, preventing an application from repeatedly trying to execute an operation that's likely to fail.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Options Pattern&lt;/strong&gt;: Provides a way to access a set of related configuration settings, allowing for strongly typed access to configuration settings and simplifying the management of configuration data.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>designpatterns</category>
      <category>dotnet</category>
      <category>backenddevelopment</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
