ZaminX.BuildingBlocks.Application
10.0.0-beta.1
dotnet add package ZaminX.BuildingBlocks.Application --version 10.0.0-beta.1
NuGet\Install-Package ZaminX.BuildingBlocks.Application -Version 10.0.0-beta.1
<PackageReference Include="ZaminX.BuildingBlocks.Application" Version="10.0.0-beta.1" />
<PackageVersion Include="ZaminX.BuildingBlocks.Application" Version="10.0.0-beta.1" />
<PackageReference Include="ZaminX.BuildingBlocks.Application" />
paket add ZaminX.BuildingBlocks.Application --version 10.0.0-beta.1
#r "nuget: ZaminX.BuildingBlocks.Application, 10.0.0-beta.1"
#:package ZaminX.BuildingBlocks.Application@10.0.0-beta.1
#addin nuget:?package=ZaminX.BuildingBlocks.Application&version=10.0.0-beta.1&prerelease
#tool nuget:?package=ZaminX.BuildingBlocks.Application&version=10.0.0-beta.1&prerelease
ZaminX.BuildingBlocks.Application
معرفی
این پروژه مجموعهای از primitiveهای لایه Application در ZaminX را فراهم میکند.
هدف این ماژول:
- تعریف الگوی استاندارد برای Command / Query / Event
- ارائه یک Mediator سبک و قابل توسعه
- فراهم کردن pipeline behaviorها
- ارائه Result pattern یکپارچه
- پشتیبانی از معماری modular monolith
قابلیتها
Messaging
ICommandIQueryIEvent
Handlers
ICommandHandlerIQueryHandlerIEventHandler
Mediator
IMediatorSendبرای requestهاPublishبرای eventها
Result Pattern
ResultResult<T>- پشتیبانی از چندین error
Pipeline Behaviors
- اجرای behaviorها قبل/بعد از handler
- پشتیبانی از ordering
Built-in Behaviors
- RequestTelemetry
- ExceptionToResult
نصب و استفاده
1. ثبت زیرساخت Application
services.AddZaminXApplication(options =>
{
options.EnableRequestTelemetryBehavior = true;
options.EnableExceptionToResultBehavior = true;
});
2. ثبت handlerها
services.AddZaminXApplicationHandlers(typeof(MyModuleMarker).Assembly);
در معماری modular monolith، هر ماژول باید handlerهای خودش را register کند.
3. استفاده از Mediator
var result = await mediator.Send(new CreateOrderCommand(...));
await mediator.Publish(new OrderCreatedEvent(...));
Custom Behavior
برای اضافه کردن behavior سفارشی:
services.AddZaminXApplication(options =>
{
options.AddOpenBehavior(typeof(MyCustomBehavior<,>));
});
نکته مهم
- نیاز به register دستی ندارد
- بهصورت خودکار در DI ثبت میشود
- بهصورت خودکار وارد pipeline میشود
Dependencyهای Behavior
اگر behavior شما dependency داشته باشد:
public class MyBehavior<TMessage, TResponse>
{
public MyBehavior(IMyService service) { }
}
باید dependency را جدا register کنید:
services.AddScoped<IMyService, MyService>();
Pipeline Execution
ترتیب پیشفرض:
- RequestTelemetry
- Validation
- Custom Behaviors
- ExceptionToResult
ترتیب نهایی با Order تعیین میشود.
Validation
Validation در core وجود ندارد.
برای فعالسازی:
services.AddZaminXApplicationFluentValidation(options ⇒ { options.AddAssembly(typeof(ModuleMarker).Assembly); });
Modular Monolith
الگوی پیشنهادی:
services.AddZaminXApplication();
services.AddSalesModule();
services.AddIdentityModule();
و داخل هر ماژول:
services.AddZaminXApplicationHandlers(typeof(ModuleMarker).Assembly);
ASP.NET Core Integration
برای تبدیل Result به HTTP response:
از پروژه:
ZaminX.BuildingBlocks.Application.AspNetCore
استفاده کنید.
مستندات
برای جزئیات بیشتر:
mediator.mdresult.mdcommands.mdqueries.md
خارج از محدوده این ماژول
- message bus
- distributed messaging
- transaction management
- caching
- retry policies
جمعبندی
این ماژول یک لایه Application سبک، قابل توسعه و مناسب برای:
- Clean Architecture
- Modular Monolith
- Microservices
فراهم میکند.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.5)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on ZaminX.BuildingBlocks.Application:
| Package | Downloads |
|---|---|
|
ZaminX.BuildingBlocks.Application.FluentValidation
Package Description |
|
|
ZaminX.ApplicationPatterns.HandlerExecution
Package Description |
|
|
ZaminX.BuildingBlocks.Application.AspNetCore
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 10.0.0-beta.1 | 746 | 4/12/2026 |