C# में माइक्रोसर्विसेज़: आर्किटेक्चर और अभ्यास A से Z तक

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C# में माइक्रोसर्विसेज़ का परिचय

\n

माइक्रोसर्विस आर्किटेक्चर जटिल, स्केलेबल और दोष-सहिष्णु एप्लिकेशन बनाने के लिए डी-फैक्टो मानक बन गया है। मोनोलिथ के विपरीत, जहां सभी कोड एक प्रक्रिया में संयुक्त होते हैं, माइक्रोसर्विसेज़ सिस्टम को छोटी, स्वतंत्र रूप से तैनात करने योग्य सेवाओं में विभाजित करते हैं। .NET (C#) प्लेटफ़ॉर्म पेशेवर माइक्रोसर्विसेज़ बनाने के लिए सभी आवश्यक उपकरण प्रदान करता है: वेब-API के लिए ASP.NET Core से लेकर कतारों, कंटेनरीकरण और ऑर्केस्ट्रेशन के साथ काम करने के लिए लाइब्रेरी तक।

\n

इस लेख में, हम आर्किटेक्चर डिज़ाइन से लेकर C# में माइक्रोसर्विस के व्यावहारिक कार्यान्वयन तक का पूरा रास्ता कोड उदाहरणों के साथ देखेंगे।

\n\n

1. माइक्रोसर्विस आर्किटेक्चर के मूल सिद्धांत

\n

सिद्धांत और एंटीपैटर्न

\n

कोड लिखने से पहले, मुख्य सिद्धांतों को समझना महत्वपूर्ण है:

\n
    \n
  • एकल जिम्मेदारी (SRP): प्रत्येक सेवा एक व्यावसायिक कार्य के लिए जिम्मेदार है (उदाहरण के लिए, ऑर्डर सेवा, भुगतान सेवा)।
  • \n
  • कमजोर युग्मन: सेवाएं नेटवर्क (HTTP, gRPC, कतारों) के माध्यम से संवाद करती हैं और एक-दूसरे के आंतरिक कार्य के बारे में नहीं जानती हैं।
  • \n
  • स्वतंत्र तैनाती: आप दूसरों को रोके बिना एक सेवा को अपडेट कर सकते हैं।
  • \n
  • डेटा का विकेंद्रीकरण: प्रत्येक सेवा के पास अपना डेटाबेस है (Database per Service)।
  • \n
\n

एंटीपैटर्न जिनसे बचना चाहिए: बहुत छोटी सेवाएं (nanoservices), साझा डेटाबेस, सिंक्रोनस कॉल चेन (chattiness)।

\n\n

सेवाओं के बीच संचार

\n

C# में माइक्रोसर्विसेज़ के बीच बातचीत के लिए उपयोग किया जाता है:

\n
    \n
  • सिंक्रोनस: REST API (HTTP/JSON) या gRPC (बाइनरी प्रोटोकॉल, तेज़)।
  • \n
  • एसिंक्रोनस: संदेश कतारें (RabbitMQ, Azure Service Bus, Kafka) — कमजोर युग्मन के लिए पसंदीदा तरीका।
  • \n
\n\n

2. C# में माइक्रोसर्विस का व्यावहारिक कार्यान्वयन

\n

उदाहरण: ऑर्डर प्रबंधन सेवा

\n

हम ASP.NET Core 8 पर एक सरल माइक्रोसर्विस बनाएंगे। परतों को अलग करने के लिए Clean Architecture का उपयोग करें।

\n\n

चरण 1: प्रोजेक्ट और संरचना

\n
dotnet new webapi -n OrderService\ncd OrderService
\n

फ़ोल्डर बनाएं: Controllers, Models, Services, Data।

\n\n

चरण 2: डेटा मॉडल

\n
// Models/Order.cs\npublic class Order\n{\n    public int Id { get; set; }\n    public string CustomerName { get; set; }\n    public decimal TotalAmount { get; set; }\n    public DateTime CreatedAt { get; set; }\n}
\n\n

चरण 3: डेटाबेस संदर्भ (Entity Framework Core)

\n
// Data/OrderDbContext.cs\npublic class OrderDbContext : DbContext\n{\n    public OrderDbContext(DbContextOptions<OrderDbContext> options) : base(options) { }\n    public DbSet<Order> Orders { get; set; }\n}
\n\n

चरण 4: सेवा परत

\n
// Services/IOrderService.cs\npublic interface IOrderService\n{\n    Task<Order> CreateOrderAsync(Order order);\n    Task<List<Order>> GetAllOrdersAsync();\n}\n\n// Services/OrderService.cs\npublic class OrderService : IOrderService\n{\n    private readonly OrderDbContext _context;\n    public OrderService(OrderDbContext context)\n    {\n        _context = context;\n    }\n\n    public async Task<Order> CreateOrderAsync(Order order)\n    {\n        _context.Orders.Add(order);\n        await _context.SaveChangesAsync();\n        return order;\n    }\n\n    public async Task<List<Order>> GetAllOrdersAsync()\n    {\n        return await _context.Orders.ToListAsync();\n    }\n}
\n\n

चरण 5: कंट्रोलर

\n
// Controllers/OrdersController.cs\n[ApiController]\n[Route("api/[controller]")]\npublic class OrdersController : ControllerBase\n{\n    private readonly IOrderService _orderService;\n    public OrdersController(IOrderService orderService)\n    {\n        _orderService = orderService;\n    }\n\                

ब्लॉग

पुस्तक अनुशंसाएँ