Skip to content

Commit 72c6ce5

Browse files
authored
Merge pull request #26 from A-Programmer/develop
Develop
2 parents 2cafd97 + 025223d commit 72c6ce5

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed

README2.md

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
# KSFramework
2+
3+
KSFramework یک فریمورک مدولار و قابل توسعه برای .NET است که پیاده‌سازی معماری تمیز (Clean Architecture)، DDD و CQRS را برای ساخت برنامه‌های سازمانی ساده می‌کند. این فریمورک شامل امکاناتی مانند ریپازیتوری جنریک، Unit of Work، سیستم پیام‌رسانی مشابه MediatR، متدهای کمکی، Enums و Exceptions رایج، API Result یکپارچه، ابزارهای صفحه‌بندی، پاسخ‌های عمومی، Tag Helperهای .NET Core و ابزارهای کاربردی دیگر است.
4+
5+
---
6+
7+
## ✨ ویژگی‌ها
8+
9+
- ساختار مناسب Clean Architecture و DDD
10+
- ریپازیتوری جنریک با محدودیت روی AggregateRootها
11+
- پیاده‌سازی کامل Unit of Work
12+
- ابزارهای صفحه‌بندی داخلی
13+
- سیستم پیام‌رسانی داخلی مشابه MediatR (KSMessaging)
14+
- ثبت Handler و Behaviorها با Scrutor
15+
- پشتیبانی از Pipeline Behaviorها (مانند لاگ‌گیری، اعتبارسنجی و ...)
16+
- انتزاع‌های قابل تست و loosely coupled
17+
18+
---
19+
20+
## 📦 نصب
21+
22+
نصب از طریق NuGet:
23+
24+
```bash
25+
dotnet add package KSFramework
26+
```
27+
28+
---
29+
30+
## 🧰 ماژول‌ها
31+
32+
- `KSFramework.KSDomain` — موجودیت‌های پایه: `Entity`, `AggregateRoot`, `ValueObject`
33+
- `KSFramework.GenericRepository` — ریپازیتوری، UnitOfWork، صفحه‌بندی
34+
- `KSFramework.KSMessaging` — CQRS با Handler Resolver داخلی، Behaviorها، Stream Handling
35+
- `KSFramework.Enums` — Enums رایج
36+
- `KSFramework.Exceptions` — Exceptions رایج
37+
- `KSFramework.KSApi` — API Result یکپارچه
38+
- `KSFramework.Pagination` — ابزار صفحه‌بندی
39+
- `KSFramework.Responses` — پاسخ‌های عمومی
40+
- `KSFramework.TagHelpers` — Tag Helperهای .NET Core
41+
- `KSFramework.Utilities` — متدهای کمکی
42+
43+
---
44+
45+
## ⚙️ نحوه استفاده
46+
47+
### ثبت سرویس‌ها (Program.cs)
48+
49+
```csharp
50+
builder.Services.AddKSMediator(typeof(Program).Assembly); // اسمبلی‌هایی که Handlerها در آن قرار دارند
51+
builder.Services.AddScoped<IUnitOfWork, UnitOfWork>();
52+
```
53+
54+
### نمونه Command
55+
56+
```csharp
57+
public record CreatePostCommand(string Title, string Content) : ICommand<Guid>;
58+
59+
public class CreatePostHandler : ICommandHandler<CreatePostCommand, Guid>
60+
{
61+
private readonly IUnitOfWork _uow;
62+
63+
public CreatePostHandler(IUnitOfWork uow)
64+
{
65+
_uow = uow;
66+
}
67+
68+
public async Task<Guid> Handle(CreatePostCommand request, CancellationToken cancellationToken)
69+
{
70+
var post = new BlogPost { Id = Guid.NewGuid(), Title = request.Title, Content = request.Content };
71+
await _uow.GetRepository<BlogPost>().AddAsync(post);
72+
await _uow.SaveChangesAsync();
73+
return post.Id;
74+
}
75+
}
76+
```
77+
78+
---
79+
80+
## 🧪 تست
81+
82+
- Handlerها و Pipelineها به راحتی قابل تست واحد هستند
83+
- پروژه `KSFramework.UnitTests` برای تست رفتار Handlerها وجود دارد
84+
- Behaviorهای سفارشی را می‌توانید به صورت مستقل تست کنید
85+
86+
---
87+
88+
## 📄 لایسنس
89+
90+
این پروژه تحت لایسنس MIT منتشر شده است.

0 commit comments

Comments
 (0)