C# में आर्किटेक्चरल पैटर्न: अव्यवस्था को क्रम में बदलना

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

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

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

C# में आर्किटेक्चरल पैटर्न: अपने कोड को स्पेगेटी में न बदलने दें

\n\n

प्रत्येक C# डेवलपर को देर-सबेर एक ऐसा क्षण आता है जब उसका प्रोजेक्ट अधिक पके हुए पास्ता की प्लेट जैसा दिखने लगता है। 500 लाइनों के तरीके, ऐसी क्लासेस जो "सब कुछ जानती हैं", और ऐसी बग्स जो खरगोशों से भी तेज़ी से बढ़ती हैं। परिचित लगता है? यह C# में आर्किटेक्चरल पैटर्न के बारे में बात करने का सही समय है।

\n\n

इस लेख में हम उबाऊ व्याख्यान नहीं देंगे। हम देखेंगे कि कौन से C# आर्किटेक्चरल पैटर्न वास्तव में प्रोजेक्ट्स को बचाते हैं, C# कोड उदाहरण दिखाएंगे और चयन के लिए स्पष्ट मानदंड देंगे। चलिए शुरू करते हैं!

\n\n

MVC पैटर्न: क्लासिक जो कभी पुराना नहीं होता

\n\n

Model-View-Controller (MVC) वेब एप्लिकेशन के लिए शायद सबसे लोकप्रिय C# आर्किटेक्चरल पैटर्न है। इसका मुख्य विचार जिम्मेदारी को तीन स्तंभों में विभाजित करना है: डेटा (Model), प्रदर्शन (View) और नियंत्रण तर्क (Controller)।

\n\n

यह व्यवहार में कैसे काम करता है?

\n\n

एक ऑनलाइन स्टोर की कल्पना करें। उपयोगकर्ता ने "कार्ट में जोड़ें" बटन दबाया - यह Controller के लिए एक संकेत है। Controller Model से डेटा अपडेट करने के लिए कहता है। Model कहता है: "हो गया!"। Controller एक उपयुक्त View चुनता है और उसे नया डेटा भेजता है। View बस वही प्रस्तुत करता है जो उसे मिला है।

\n\n

यहाँ ASP.NET Core MVC के लिए एक न्यूनतम C# कोड उदाहरण है:

\n\n
// Model\npublic class Product\n{\n    public int Id { get; set; }\n    public string Name { get; set; }\n    public decimal Price { get; set; }\n}\n\n// Controller\npublic class ProductController : Controller\n{\n    private readonly AppDbContext _context;\n\n    public ProductController(AppDbContext context)\n    {\n        _context = context;\n    }\n\n    public IActionResult Index()\n    {\n        var products = _context.Products.ToList();\n        return View(products); // View खुद तय करेगी कि सूची कैसे प्रस्तुत करनी है\n    }\n}
\n\n

कब उपयोग करें: समृद्ध UI वाले वेब एप्लिकेशन, जहाँ तर्क और प्रस्तुति को स्पष्ट रूप से अलग करने की आवश्यकता होती है। ASP.NET Core पर C# एप्लिकेशन आर्किटेक्चर के लिए आदर्श।

\n\n

MVP पैटर्न: उन लोगों के लिए जो Windows Forms से परिचित हैं

\n\n

Model-View-Presenter (MVP) MVC का बड़ा भाई है, जो विशेष रूप से WinForms या WPF पर डेस्कटॉप एप्लिकेशन के लिए अच्छा है। मुख्य अंतर: View एक निष्क्रिय "डमी" है, और Presenter पूरी प्रक्रिया को नियंत्रित करता है।

\n\n

WinForms के लिए उदाहरण

\n\n
// इंटरफ़ेस View (निष्क्रिय)\npublic interface ILoginView\n{\n    string UserName { get; }\n    string Password { get; }\n    event EventHandler LoginClicked;\n    void ShowError(string message);\n}\n\n// Presenter (सक्रिय संचालक)\npublic class LoginPresenter\n{\n    private readonly ILoginView _view;\n    private readonly IAuthService _authService;\n\n    public LoginPresenter(ILoginView view, IAuthService authService)\n    {\n        _view = view;\n        _authService = authService;\n        _view.LoginClicked += OnLoginClicked;\n    }\n\n    private void OnLoginClicked(object sender, EventArgs e)\n    {\n        if (_authService.Authenticate(_view.UserName, _view.Password))\n        {\n            // मुख्य फॉर्म पर जाएँ\n        }\n        else\n        {\n            _view.ShowError("गलत लॉगिन या पासवर्ड");\n        }\n    }\n}
\n\n

लाभ: View को mock ऑब्जेक्ट से बदलकर आसानी से परीक्षण किया जा सकता है। नुकसान: कोड अधिक हो जाता है, लेकिन यह पूर्वानुमानित हो जाता है।

\n\n

Repository पैटर्न: डेटाबेस की जटिलता को छिपाना

\n\n

Repository पैटर्न C# व्यावसायिक तर्क और डेटा भंडारण के बीच एक मध्यवर्ती परत है। पूरे कोड में SQL क्वेरी फैलाने के बजाय, आप संस्थाओं के साथ काम करने के लिए एक एकल "रिपॉजिटरी" बनाते हैं।

\n\n

Entity Framework Core के साथ उदाहरण

\n\n
public interface IProductRepository\n{\n    Task<Product> GetByIdAsync(int id);\n    Task<IEnumerable<Product>> GetAllAsync()                

ब्लॉग

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