C# सिर्फ एक भाषा नहीं, बल्कि उपकरणों का एक पूरा ब्रह्मांड क्यों है
\nजब कोई डेवलपर .NET की दुनिया में उतरना शुरू करता है, तो वह अक्सर सोचता है: "C# बहुत अच्छा है, लेकिन मैं अभी क्या कर सकता हूं?" इसका जवाब सरल है: लाइब्रेरीज़ का उपयोग करें। C# का इकोसिस्टम इतना समृद्ध है कि कभी-कभी ऐसा लगता है कि हर कार्य के लिए NuGet पर पहले से ही कोई तैयार समाधान मौजूद है। और यह अच्छा है, क्योंकि लोकप्रिय C# लाइब्रेरीज़ आपको पहिया का पुनः आविष्कार करने की अनुमति नहीं देती हैं, बल्कि व्यावसायिक तर्क पर ध्यान केंद्रित करने देती हैं।
\nइस लेख में हम .NET लाइब्रेरी इकोसिस्टम का विश्लेषण करेंगे, जो वास्तव में हर डेवलपर के लिए आवश्यक हैं। हम केवल नाम सूचीबद्ध नहीं करेंगे - मैं कोड उदाहरण दिखाऊंगा, बताऊंगा कि कहां क्या उपयोग करना है, और व्यावहारिक सुझाव दूंगा। चलिए शुरू करते हैं!
\n\nलॉगिंग: Serilog बनाम NLog — दिग्गजों की लड़ाई
\nलॉगिंग पहली चीज है जिसके बारे में सोचना चाहिए। लॉग के बिना आप अंधे हैं। Serilog लाइब्रेरी .NET की दुनिया में डी-फैक्टो मानक बन गई है। क्यों? क्योंकि यह लॉग को कहीं भी भेज सकती है: फ़ाइल, कंसोल, Elasticsearch, डेटाबेस। और यह सब न्यूनतम कॉन्फ़िगरेशन के साथ।
\nउदाहरण: ASP.NET Core में Serilog सेटअप
\nusing Serilog;\n\nLog.Logger = new LoggerConfiguration()\n .WriteTo.Console()\n .WriteTo.File("logs/myapp-.txt", rollingInterval: RollingInterval.Day)\n .CreateLogger();\n\nvar builder = WebApplication.CreateBuilder(args);\nbuilder.Host.UseSerilog();\n\nvar app = builder.Build();\napp.MapGet("/", () => "Hello World!");\napp.Run();\nNLog भी एक शक्तिशाली उपकरण है, लेकिन इसे XML में अधिक कॉन्फ़िगरेशन की आवश्यकता होती है। यदि आप सरल और तेज़ चाहते हैं - Serilog चुनें। यदि आपको पूर्ण नियंत्रण चाहिए - NLog। लेकिन 90% प्रोजेक्ट्स के लिए Serilog सबसे अच्छा विकल्प होगा।
\n\nEntity Framework Core: ORM जिससे डरने की ज़रूरत नहीं है
\nडेटाबेस के साथ काम करना हर डेवलपर का दर्द है। डेटाबेस के लिए C# लाइब्रेरीज़ दो खेमों में बंटी हैं: भारी ORM (Entity Framework) और हल्की (Dapper)। Entity Framework Core (EF Core) एक शक्तिशाली उपकरण है जो आपके लिए SQL जनरेट करता है। यह जटिल डोमेन मॉडल के लिए आदर्श है।
\nउदाहरण: EF Core के साथ सरल CRUD
\npublic class User\n{\n public int Id { get; set; }\n public string Name { get; set; }\n}\n\npublic class AppDbContext : DbContext\n{\n public DbSet<User> Users { get; set; }\n}\n\n// उपयोग\nusing var db = new AppDbContext();\nvar user = new User { Name = "एलेक्सी" };\ndb.Users.Add(user);\ndb.SaveChanges();\nलेकिन एक बारीकी है: EF Core जटिल क्वेरीज़ पर धीमा हो सकता है। उच्च-लोड सिस्टम के लिए Dapper का उपयोग करना बेहतर है - एक माइक्रो-ORM जो कई गुना तेज़ काम करता है, लेकिन इसमें SQL मैन्युअल रूप से लिखना पड़ता है।
\nDapper कब चुनें?
\n- \n
- अधिकतम प्रदर्शन चाहिए \n
- आपके पास सरल क्वेरीज़ हैं (जटिल तर्क के बिना CRUD) \n
- आप SQL से नहीं डरते \n
using var connection = new SqlConnection(connectionString);\nvar users = connection.Query<User>("SELECT * FROM Users WHERE IsActive = @Active", new { Active = true });\n\nAutoMapper: दर्द रहित मैपिंग
\nयदि आप C# में लिखते हैं, तो आप लगातार एक ऑब्जेक्ट को दूसरे में बदलने का सामना करते हैं। DTO → Entity, Entity → ViewModel। मैन्युअल मैपिंग उबाऊ है और त्रुटियों से भरा है। AutoMapper इस प्रक्रिया को स्वचालित करता है।
\nउदाहरण: प्रोफ़ाइल सेटअप
\npublic class UserProfile : Profile\n{\n public UserProfile()\n {\n CreateMap<User, UserDto>()\n .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => $"{src.FirstName} {src.LastName}"));\n }\n}\n\n// उपयोग\nvar config = new MapperConfiguration(cfg => cfg.AddProfile<UserProfile>());\nvar mapper = config.CreateMapper();\nvar dto = mapper.Map<UserDto>(user);\nसुझाव: AutoMapper का अत्यधिक उपयोग न करें। यदि मैपिंग बहुत