প্রকল্প সম্পর্কে
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)
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.