ZaminX.BuildingBlocks.Application.AspNetCore
10.0.0-beta.1
dotnet add package ZaminX.BuildingBlocks.Application.AspNetCore --version 10.0.0-beta.1
NuGet\Install-Package ZaminX.BuildingBlocks.Application.AspNetCore -Version 10.0.0-beta.1
<PackageReference Include="ZaminX.BuildingBlocks.Application.AspNetCore" Version="10.0.0-beta.1" />
<PackageVersion Include="ZaminX.BuildingBlocks.Application.AspNetCore" Version="10.0.0-beta.1" />
<PackageReference Include="ZaminX.BuildingBlocks.Application.AspNetCore" />
paket add ZaminX.BuildingBlocks.Application.AspNetCore --version 10.0.0-beta.1
#r "nuget: ZaminX.BuildingBlocks.Application.AspNetCore, 10.0.0-beta.1"
#:package ZaminX.BuildingBlocks.Application.AspNetCore@10.0.0-beta.1
#addin nuget:?package=ZaminX.BuildingBlocks.Application.AspNetCore&version=10.0.0-beta.1&prerelease
#tool nuget:?package=ZaminX.BuildingBlocks.Application.AspNetCore&version=10.0.0-beta.1&prerelease
ZaminX.BuildingBlocks.Application.AspNetCore
معرفی
این پروژه integration بین ZaminX.BuildingBlocks.Application و ASP.NET Core را فراهم میکند.
هدف این پروژه این است که concernهای مربوط به وب و HTTP را از core Application جدا نگه دارد و در عین حال استفاده از primitiveهای Application را در Web API سادهتر کند.
مسئولیتها
این پروژه مسئول این موارد است:
- تبدیل
ResultوResult<T>بهIResult - فراهم کردن integration مناسب برای Minimal API و ASP.NET Core
- نگه داشتن concernهای HTTP خارج از core Application
چرا این پروژه جدا است
در ZaminX، core Application نباید به ASP.NET Core وابسته باشد.
به همین دلیل:
ZaminX.BuildingBlocks.Applicationفقط primitiveهای لایه Application را نگه میداردZaminX.BuildingBlocks.Application.AspNetCoreconcernهای مربوط به وب را پیادهسازی میکند
این جداسازی intentional است و باعث میشود:
- core reusable بماند
- coupling کاهش پیدا کند
- integrationهای دیگر در آینده راحتتر اضافه شوند
قابلیت فعلی
ResultHttpMapper
این پروژه در نسخه فعلی شامل mapper مربوط به HTTP result است.
هدف آن:
- تبدیل
ResultبهIResult - تبدیل
Result<T>بهIResult
نمونه استفاده
برای Result بدون data
var result = await mediator.Send(command, cancellationToken);
return result.ToHttpResult();
برای Result دارای data
var result = await mediator.Send(query, cancellationToken);
return result.ToHttpResult();
رفتار فعلی mapping
Success
Resultموفق →200 OKResult<T>موفق →200 OK
Failure
Resultناموفق →400 BadRequestResult<T>ناموفق →400 BadRequest
شکل خروجی
Success بدون data
{
"success": true
}
Success با data
{
"success": true,
"data": {}
}
Failure
{
"success": false,
"errors": [
{
"code": "some.error",
"message": "Some error message."
}
]
}
نحوه اضافه کردن reference
در پروژه وب:
<ProjectReference Include="...\ZaminX.BuildingBlocks.Application.AspNetCore.csproj" />
نحوه استفاده در Minimal API
app.MapPost("/orders", async (
CreateOrderCommand command,
IMediator mediator,
CancellationToken cancellationToken) =>
{
var result = await mediator.Send(command, cancellationToken);
return result.ToHttpResult();
});
app.MapGet("/orders/{id:guid}", async (
Guid id,
IMediator mediator,
CancellationToken cancellationToken) =>
{
var result = await mediator.Send(new GetOrderByIdQuery(id), cancellationToken);
return result.ToHttpResult();
});
نسبت با Application Core
این پروژه از:
ZaminX.BuildingBlocks.Application
استفاده میکند، اما برعکس آن برقرار نیست.
یعنی:
- AspNetCore integration به Application وابسته است
- Application به AspNetCore integration وابسته نیست
مناسب برای چه سناریوهایی است
این پروژه برای این سناریوها مناسب است:
- ASP.NET Core Web API
- Minimal API
- endpointهایی که از
IMediatorاستفاده میکنند - سیستمهایی که response آنها بر مبنای
Resultاست
Non-goals
این پروژه در نسخه فعلی این هدفها را ندارد:
- exception handling middleware
- problem details mapping
- status code policyهای پیشرفته
- integration با MVC filters
- OpenAPI response conventions
- endpoint base classes
این موارد در صورت نیاز میتوانند در integrationهای بعدی اضافه شوند.
جمعبندی
ZaminX.BuildingBlocks.Application.AspNetCore یک integration سبک و مشخص برای استفاده از primitiveهای Application در ASP.NET Core فراهم میکند.
این پروژه کمک میکند که:
- endpointها سادهتر شوند
- mapping
Resultبه HTTP یکدست شود - concernهای وب از core Application جدا بمانند
| 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
- ZaminX.BuildingBlocks.Application (>= 10.0.0-beta.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 10.0.0-beta.1 | 115 | 4/12/2026 |