C# के साथ मोनोरिपॉजिटरी: कोड संगठन और सर्वोत्तम अभ्यास
C# (.NET) में आधुनिक विकास में, मोनोरिपॉजिटरी (monorepo) दृष्टिकोण का तेजी से उपयोग किया जा रहा है। मल्टीरिपॉजिटरी के विपरीत, जहां प्रत्येक प्रोजेक्ट अपने Git-रिपॉजिटरी में रहता है, मोनोरिपॉजिटरी कंपनी या उत्पाद के सभी कोड को एक केंद्रीय भंडार में संग्रहीत करता है। .NET डेवलपर्स के लिए, इसका अर्थ है एक एकल समाधान (solution), साझा लाइब्रेरी और सरलीकृत CI/CD सेटअप। इस लेख में, हम C# के साथ मोनोरिपॉजिटरी को ठीक से व्यवस्थित करने का तरीका समझेंगे, कोड उदाहरण प्रस्तुत करेंगे और प्रमुख लाभों पर चर्चा करेंगे।
1. .NET के लिए मोनोरिपॉजिटरी के लाभ
मोनोरिपॉजिटरी उन टीमों के लिए विशेष रूप से उपयोगी है जो कई संबंधित .NET प्रोजेक्ट्स पर काम करती हैं: माइक्रोसर्विसेज, वेब एप्लिकेशन, क्लास लाइब्रेरी। मुख्य लाभ:
- निर्भरताओं का एकीकृत संस्करण — सभी प्रोजेक्ट NuGet-पैकेज के समान संस्करणों का उपयोग करते हैं, जो विरोधों को समाप्त करता है।
- सरलीकृत रीफैक्टरिंग — सामान्य इंटरफ़ेस या डेटा मॉडल में बदलाव तुरंत सभी उपभोक्ताओं पर लागू होता है।
- साझा Git इतिहास — परमाणु कमिट जो कई प्रोजेक्ट्स को प्रभावित करते हैं, एक ही स्थान पर दिखाई देते हैं।
- केंद्रीकृत CI/CD — सभी घटकों के निर्माण, परीक्षण और डिप्लॉय के लिए एक पाइपलाइन।
C# के लिए, मोनोरिपॉजिटरी एक एकल .sln-फ़ाइल (solution) के आसपास बनाया जाता है, जो सभी प्रोजेक्ट्स को संदर्भित करता है। यह निर्भरताओं के प्रबंधन के लिए Visual Studio और .NET CLI के अंतर्निहित उपकरणों का उपयोग करने की अनुमति देता है।
2. C# के लिए मोनोरिपॉजिटरी की संरचना
.NET समाधान के लिए एक सामान्य मोनोरिपॉजिटरी संरचना पर विचार करें। यह इस तरह दिख सकती है:
MyCompany/├── src/│ ├── MyCompany.Common/ # सामान्य लाइब्रेरी│ │ ├── MyCompany.Common.csproj│ │ └── ...│ ├── MyCompany.WebApi/ # वेब-API│ │ ├── MyCompany.WebApi.csproj│ │ └── ...│ └── MyCompany.BackgroundJob/ # पृष्ठभूमि सेवा│ ├── MyCompany.BackgroundJob.csproj│ └── ...├── tests/│ ├── MyCompany.Common.Tests/│ ├── MyCompany.WebApi.Tests/│ └── MyCompany.BackgroundJob.Tests/├── docs/ # दस्तावेज़ीकरण├── scripts/ # CI/CD के लिए स्क्रिप्ट├── .gitignore└── MyCompany.sln # एकल समाधानइस संरचना के प्रमुख तत्व:
- src/ — स्रोत कोड वाला फ़ोल्डर। प्रत्येक प्रोजेक्ट अपने .csproj-फ़ाइल के साथ एक अलग फ़ोल्डर है।
- tests/ — परीक्षणों वाला फ़ोल्डर। परीक्षण प्रोजेक्ट्स के नाम मुख्य प्रोजेक्ट्स के नामों को .Tests प्रत्यय के साथ दोहराते हैं।
- docs/ — दस्तावेज़ीकरण (README, आर्किटेक्चरल निर्णय)।
- scripts/ — बिल्ड या डिप्लॉय ऑटोमेशन के लिए स्क्रिप्ट।
- MyCompany.sln — एकल समाधान फ़ाइल जो सभी प्रोजेक्ट्स को शामिल करती है।
ऐसी संरचना नेविगेशन को सरल बनाती है और रूट कॉन्फ़िगरेशन को बदले बिना नए प्रोजेक्ट्स को आसानी से जोड़ने की अनुमति देती है।
3. एकल समाधान और सामान्य निर्भरताओं का सेटअप
.NET में मोनोरिपॉजिटरी बनाने के लिए, dotnet new sln कमांड का उपयोग करें, फिर प्रोजेक्ट्स जोड़ें:
# रूट फ़ोल्डर बनाएँ और उसमें जाएँmkdir MyCompany && cd MyCompany
# एक खाली समाधान फ़ाइल बनाएँdotnet new sln -n MyCompany
# फ़ोल्डर संरचना बनाएँmkdir src tests docs scripts
# प्रोजेक्ट्स बनाएँdotnet new classlib -n MyCompany.Common -o src/MyCompany.Commondotnet new webapi -n MyCompany.WebApi -o src/MyCompany.WebApidotnet new console -n MyCompany.BackgroundJob -o src/MyCompany.BackgroundJob
# समाधान में प्रोजेक्ट्स जोड़ेंdotnet sln add src/MyCompany.Common/MyCompany.Common.csprojdotnet sln add src/MyCompany.WebApi/MyCompany.WebApi.csprojdotnet sln add src/MyCompany.BackgroundJob/MyCompany.BackgroundJob.csprojअब वेब-API से सामान्य लाइब्रेरी में एक संदर्भ जोड़ें:<