ساخت اولین پروژه NET Aspire
این مقاله شما را در ساخت اولین اپلیکیشن دات نت Aspire راهنمایی می کند. اگر میخواهید یک نمای کلی از داتنت Aspire و آنچه را که برای ما به ارمغان میآورد، ببینید، مقاله NET Aspire چیست را بررسی کنید.
پیش نیازها
قبل از شروع به کار با .NET Aspire باید چند چیز را آماده کنید:
- Visual Studio 2022 Preview (نسخه 17.9 یا بالاتر)
- .NET Aspire
- دات نت 8.0
- Docker Desktop
اگر ترجیح می دهید از Visual Studio استفاده نکنید، می توانید دات نت Aspire را با استفاده از dotnet CLI با استفاده از دستورdotnet install aspire workload نصب کنید. و سپس می توانید از هر IDE که دوست دارید استفاده کنید.
برای راهنمایی جامع در مورد نحوه نصب تمامی پیش نیازهای دات نت Aspire، نحوه نصب دات نت Aspire را بررسی کنید.
ساخت اولین پروژه NET Aspire
در ویژوال استودیو، به File > New > Project بروید، .NET Aspire را در منوی بازشوی نوع پروژه انتخاب کنید یا "Aspire" را جستجو کنید. باید دو قالب ظاهر شود:
.NET Aspire Application – یک الگوی پروژه خالی دات نت Aspire.
.NET Aspire Starter Application – یک الگوی پروژه جامع تری که شامل Blazor frontend، یک سرویس API backend و chaching با استفاده از Redis است.
ما الگوی .NET Aspire Starter Application را برای اولین برنامه NET Aspire خود انتخاب می کنیم.

به پروژه خود یک نام بدهید و مطمئن شوید که در کادر Aditional Information، گزینه Use Redis for caching را فعال کنید. این کاملا اختیاری است، اما به عنوان مثال خوبی از آنچه .NET Aspire می تواند برای شما انجام دهد عمل می کند.

استفاده از dotnet CLI
همچنین می توانید برنامه های دات نت Aspire را با استفاده از dotnet CLI ایجاد کنید. برای ایجاد یک برنامه با استفاده از قالب .NET Aspire Starter Application از دستور زیر استفاده کنید و نام Solution مورد نظر خود را جایگزین Foo کنید.
dotnet new aspire-starter --use-redis-cache --output Foo
ساختار پروژه
با ایجاد سولوشن .NET Aspire، اجازه دهید نگاهی به ساختار آن بیندازیم. شما باید 4 پروژه در solution خود داشته باشید:
ApiService: یک پروژه ASP.NET Core API که توسط frontend برای بازیابی داده ها استفاده می شود.
AppHost: با اتصال و پیکربندی پروژه ها و سرویس های مختلف برنامه دات نت Aspire شما به عنوان یک ارکستر عمل می کند.
ServiceDefaults: یک پروژه مشترک که برای مدیریت پیکربندیهای مربوط به انعطافپذیری، service discovery و telemetry استفاده میشود.
web: یک برنامه Blazor که به عنوان فرانت اند ما عمل می کند.
وابستگی بین پروژه ها به صورت زیر است:

AppHost project
این پروژه ارکستراتور، سولوشن .NET Aspire ما است. نقش آن اتصال و پیکربندی پروژه ها و خدمات مختلف برنامه دات نت Aspire ما است.
بیایید به فایل csproj. آن نگاهی بیندازیم:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net8.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <IsAspireHost>true</IsAspireHost> </PropertyGroup> <ItemGroup> <ProjectReference Include="..\Foo.ApiService\Foo.ApiService.csproj" /> <ProjectReference Include="..\Foo.Web\Foo.Web.csproj" /> </ItemGroup> <ItemGroup> <PackageReference Include="Aspire.Hosting" Version="8.0.0-preview.1.23557.2" /> </ItemGroup> </Project>
دو چیز برجسته خواهد شد:
عنصر IsAspireHost که به صراحت این پروژه را به عنوان ارکستر کننده سولوشن ما مشخص می کند
مرجع بسته Aspire.Hosting. این بسته حاوی API اصلی و انتزاعات برای مدل برنامه .NET Aspire است. از آنجایی که فریم ورک هنوز در پیش نمایش است، بسته های NET Aspire NuGet نیز به عنوان نسخه های پیش نمایش علامت گذاری می شوند.
اجازه دهید در ادامه به Program.cs نگاه کنیم. در آنجا متوجه خواهید شد که یک الگوی سازنده بسیار آشنا برای پیوند دادن پروژههای مختلف و فعال کردن حافظه پنهان استفاده میشود.
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedisContainer("cache");
var apiservice = builder.AddProject<Projects.Foo_ApiService>("apiservice");
builder.AddProject<Projects.Foo_Web>("webfrontend")
.WithReference(cache)
.WithReference(apiservice);
builder.Build().Run();
کاری که کد بالا در اصل انجام می دهد موارد زیر است:
- یک نمونه IDistributedApplicationBuilder را ایجاد می کند که برای ساخت DistributedApplication ما استفاده می شود
- یک RedisContainerResource ایجاد می کند که می توانیم بعداً در پروژه ها و خدمات خود به آن ارجاع دهیم
- پروژه ApiService ما را به برنامه اضافه می کند و یک نمونه را در ProjectResource نگه می دارد
- پروژه وب ما را با ارجاع به کش Redis و ApiService به برنامه اضافه می کند
- نهایتاً Build() را برای ساختن نمونه DistributedApplication و Run() برای اجرای آن فراخوانی کنیم.
ApiService project
پروژه ApiService یک اندپوینت /weatherforcast را نشان می دهد که می توانیم از آن در پروژه وب خود استفاده کنیم. برای اینکه API را برای استفاده در دسترس قرار دهیم، آن را در پروژه AppHost خود ثبت کردیم و نام apiservice را به آن دادیم.
builder.AddProject<Projects.Foo_ApiService>("apiservice")
Web project
پروژه وب نمایانگر بخش Blazor ما است و از enpoint /weatherforecast که توسط ApiService آماده شده است، استفاده می کند. روشی که این کار را انجام می دهد جایی است که جادوی .NET Aspire واقعاً شروع به ورود می کند.
متوجه خواهید شد که از نوع HttpClient استفاده می کند:
public class WeatherApiClient(HttpClient httpClient) { public async Task<WeatherForecast[]> GetWeatherAsync() { return await httpClient. GetFromJsonAsync<WeatherForecast[]>("/weatherforecast") ?? []; } }
اکنون، اگر به داخل Program.cs نگاه کنید، متوجه چیز جالبی در خط 14 خواهید شد:
builder.Services.AddHttpClient<WeatherApiClient>(client =>
client.BaseAddress = new("http://apiservice"));
به یاد دارید که چگونه به پروژه ApiService خود، نام apiservice را هنگام اضافه کردن آن به عنوان ProjectResource در DistributedApplication دادیم؟ اکنون این خط WeatherApiClient را برای استفاده از service discovery و اتصال به سرویسی به نام apiservice پیکربندی می کند. http://apiservice به طور خودکار به آدرس صحیح منبع ApiService ما بدون نیاز به هیچ گونه پیکربندی اضافی از طرف شما حل می شود.
ServiceDefaults project
مشابه پروژه AppHost، پروژه مشترک نیز از طریق یک ویژگی پروژه خاص متمایز می شود:
<IsAspireSharedProject>true</IsAspireSharedProject>
این پروژه تضمین میکند که تمام پروژهها و خدمات مختلف در مورد انعطافپذیری، service discovery و telemetry به یک شکل تنظیم شدهاند. این کار را با مجموعهای از متدعهای توسعه یافته انجام میدهد که میتوانند توسط پروژهها و سرویسهای سولوشن در نمونههای IHostApplicationBuilder خود فراخوانی شوند.
اجرای پروژه
به منظور اجرای پروژه، مطمئن شوید که AppHost را به عنوان پروژه شروع خود تنظیم کرده اید و (F5) را در ویژوال استودیو بزنید. همچنین، میتوانید پروژه را از خط فرمان، با استفاده از dotnet run --project Foo/Foo.AppHost اجرا کنید و نام پروژه خود را جایگزین Foo کنید.
پس از شروع برنامه، داشبورد NET Aspire به شما نمایش داده می شود.

داشبورد به شما امکان می دهد بخش های مختلف برنامه دات نت Aspire خود را نظارت کنید: پروژه ها، کانتینرها و فایل های اجرایی. همچنین گزارشهای جمعآوریشده و ساختاریافتهای را برای سرویسهای شما، ردیابی درخواستها و معیارهای مفید دیگر ارائه میکند.

و تمام! بابت ساخت و اجرای اولین برنامه .NET Aspire خود تبریک می گویم!

علی
سلام . این پابلیش چگونه انجام میشه ؟ چون دسترسی به azure در ایران نیست ? بخاطر اینکه enviroment رو در زمان پابلیش باید پرکنیم که اجازه نمیده
علیرضا
دسترسی به Azure از ایران محدودیتی نداره حداقل سرویس های رایگانش در دسترس هستند