প্রকল্প সম্পর্কে

Purview.Aspire.ResourceKit হলো একটি সোর্স-জেনারেটর-চালিত ফ্রেমওয়ার্ক, যা .NET Aspire AppHost রিসোর্স কম্পোজিশনকে স্ট্রংলি টাইপড, টেস্ট-বান্ধব ক্লাস হিসেবে গঠন করে। ## উদ্দেশ্য AppHost অ্যাপ্লিকেশন বড় হয়ে গেলে রিসোর্স সেটআপ রক্ষণাবেক্ষণযোগ্য ও সহজে খুঁজে পাওয়ার মতো রাখা চ্যালেঞ্জিং হয়ে ওঠে। ResourceKit কম্পোজিশন লজিককে নির্দিষ্ট রিসোর্স ক্লাসে সরিয়ে এবং প্লাম্বিং স্বয়ংক্রিয়ভাবে জেনারেট করে এই সমস্যার সমাধান করে। ## প্রধান সুবিধা - **পরিচ্ছন্ন AppHost কোড**: রিসোর্স লজিক একক সেটআপ মেথডের বদলে আলাদা ক্লাসে বিভক্ত হয় - **স্ট্রং টাইপিং ও IntelliSense**: স্ট্রিং-নির্ভর কনফিগারেশনের বদলে কম্পাইল-টাইম নিরাপত্তা দেয় - **জেনারেটেড ওয়্যারিং**: স্বয়ংক্রিয়ভাবে হোস্ট/রিসোর্স অপশন ও রেজিস্ট্রেশন কোড তৈরি করে - **পূর্বানুমেয় লাইফসাইকেল**: ইন্টার-রিসোর্স নির্ভরতা ব্যবস্থাপনার জন্য Build তারপর Configure প্যাটার্ন অনুসরণ করে - **টেস্টযোগ্যতা**: ইউনিট টেস্টিংয়ের জন্য অপশন ওভাররাইড ও বিচ্ছিন্ন রিসোর্স কম্পোজিশন সমর্থন করে ## ব্যবহার মডেল অ্যাট্রিবিউট ব্যবহার করে একটি হোস্ট কিট ও রিসোর্স ক্লাস সংজ্ঞায়িত করুন: ```csharp [HostKit] partial class ShopHostKit; [ResourceDefinition<ProjectResource>("api")] partial class ApiResourceKit { protected override IResourceBuilder<ProjectResource> BuildResource(IDistributedApplicationBuilder builder) => builder.AddProject<Projects.Example_Service>(Name); } ``` তারপর AppHost-এ রেজিস্টার করুন: ```csharp var builder = DistributedApplication.CreateBuilder(args); builder.AddAspireResourceKit(); ``` আপনার হোস্ট মেটাডেটা থেকে একটি এক্সটেনশন মেথড জেনারেট হয় (যেমন `AddAspireResourceKit()`)। ## লাইফসাইকেল ResourceKit একটি দুই-পর্যায়ের লাইফসাইকেল প্রয়োগ করে: 1. **Build**: পৃথক রিসোর্স তৈরি করুন (যেমন `AddProject`, `AddRedis`) 2. **Configure**: রেফারেন্স, বাইন্ডিং ও ক্রস-রিসোর্স ওয়্যারিংয়ের মাধ্যমে রিসোর্সগুলোকে সংযুক্ত করুন এনাবলমেন্ট নিয়ন্ত্রণ করে কখন রিসোর্স সক্রিয় হবে: - `IsEnabled`: সাধারণত জেনারেটেড অপশন থেকে আসা সংরক্ষিত টগল - `IsResourceEnabled(builder)`: এনভায়রনমেন্ট, কনফিগ বা পাবলিশ মোড মূল্যায়নের রানটাইম হুক কোনো রিসোর্স নিষ্ক্রিয় হিসেবে মূল্যায়িত হলে তার Build ও Configure উভয় পর্যায় সম্পূর্ণভাবে বাদ দেওয়া হয়। ## জেনারেটেড আর্টিফ্যাক্ট `[HostKit]` ও `[ResourceDefinition]` ঘোষণা থেকে সোর্স জেনারেটর যা তৈরি করে: - একটি হোস্ট রিসোর্স বেস ক্লাস - হোস্টে রিসোর্স প্রপার্টি - হোস্ট-লেভেল ও প্রতি-রিসোর্স অপশন (সক্রিয় থাকলে) - হোস্ট কিট বিল্ড, কনফিগার ও রেজিস্টার করার একটি AppHost এক্সটেনশন মেথড ## Agent Skills প্যাকেজটি `skills/**/SKILL.md` ফাইলের মাধ্যমে [Agent Skills](https://agentskills.io/) বান্ডল করতে পারে। বিল্ডের সময় এগুলো ব্যবহারকারী প্রজেক্টের `.agents/skills/`-এ কপি হয়। নিষ্ক্রিয় করতে: ```xml <EnableAgentFolderInPackage>false</EnableAgentFolderInPackage> ``` ## রিপোজিটরি স্ট্রাকচার - `src/src/ResourceKit`: রানটাইম প্যাকেজ সোর্স - `src/src/SourceGeneration`: Roslyn সোর্স জেনারেটর - `src/src/Example.*`: নমুনা Aspire অ্যাপ্লিকেশন - `src/tests/*`: ইউনিট ও ইন্টিগ্রেশন টেস্ট ## ডকুমেন্টেশন - [হোমপেজ](https://purview.dev/projects/aspire-resourcekit/) - [শুরু করা](docs/wiki/Getting-Started.md) - [Lifecycle-Build-Configure গাইড](docs/wiki/Lifecycle-Build-Configure.md) - [এনাবলমেন্ট ডকুমেন্টেশন](docs/wiki/Enablement.md) - [কনফিগারেশন ও অপশন](docs/wiki/Configuration-and-Options.md) - [ডায়াগনস্টিকস ও ট্রাবলশুটিং](docs/wiki/Diagnostics.md) - [উদাহরণ: জেনারেটেড বনাম ম্যানুয়াল](docs/wiki/Examples.md)