بازخوردهایی که از زمان اعلام و راهاندازی NET Aspire. در ماه گذشته دریافت کردهایم، شگفتانگیز بوده است! مشارکت و درخواستهای برای تیم الهامبخش بوده است. ما در حال یادگیری زیادی درباره نحوه استفاده توسعهدهندگان ازNET Aspire. و یا سایر اجزاء در توسعه برنامههای توزیع شده ابری هستیم. برخی مشارکتهای فوقالعاده از جامعه انجام شده و بسیاری دیگر نیز در حال پیشرفت هستند. به نمایندگی از تیم، از هیجان و بازخوردهای شما سپاسگزاریم!
پیشنمایش NET Aspire. نسخه 2 اکنون در دسترس است! در اینجا خلاصهای از ویژگیهای جدید در این نسخه پیشنمایش آورده شده است
داشبورد
• همه انواع منابع اکنون در یک نمای «منابع» ترکیب شدهاند
• طراحی جدید بخش جزئیات
گزارشهای کنسول برای همه انواع منابع اکنون در یک نمای «گزارشهای کنسول» ترکیب شدهاند
• نام دستهبندی گزارش به نمای گزارشهای ساختاریافته اضافه شده است
• درخواستهای خروجی به سایر منابع و خدمات توسعه با نام منبع/خدمت به جای آدرس اینترنتی نمایش داده میشوند
هاستینگ و ارکستراسیون:
• کانتینرها اکنون پشتیبانی از پیکربندی آرگومانها را برای ارسال به هنگام شروع دارند
• کانتینرها و اجراییها اکنون میتوانند به سایر منابع با نقاط انتهایی برای پیکربندی کشف خدمات ارجاع دهند
• افزودن پروژهها بدون یک <ProjectReference />
• منابع اکنون میتوانند به نقاط انتهایی موجود URI برای پیکربندی کشف خدمات ارجاع دهند
• پشتیبانی از اضافه کردن برنامههای Node.js به عنوان منابع
• پروژهها اکنون از پورت نمایه راهاندازی خود هنگام میزبانی با یا بدون نمونههای تکراری استفاده میکنند
اجزاء:
- بستههای جزء اکنون دارای آیکونهای مجزا هستند
- جدید: افزوده شدن جزء MySqlConnector
- جدید: افزوده شدن جزء MongoDB
- اجزاء SDK آژور اکنون به صورت پیشفرض ردیابی توزیعشده را فعال میکنند (به جز برای سرویس بس)
Dapr:
• دیگر نیازی به مشخص کردن ID برای کنارگذارهای Dapr نیست
• پشتیبانی درجه یک برای توصیف همه اجزاء Dapr در مدل برنامه
• پشتیبانی CLI توسعهدهنده آژور (AZD) برای استقرار برنامههای .NET Aspire که از Dapr استفاده میکنند در برنامههای کانتینری آژور (ACA)
دریافت پیشنمایش NET Aspire. نسخه 2
- برای نصب یا ارتقاء به پیشنمایش NET Aspire. نسخه 2، مراحل زیر را انجام دهید:
اگر از ویندوز استفاده میکنید و با استفاده از ویژوال استودیو باNET Aspire. کار میکنید، آخرین نسخه پیشنمایش ویژوال استودیو 2022 را نصب یا بهروزرسانی کنید (17.9.0 پیشنمایش 2.0 در زمان نوشتن)
مطمئن شوید که مؤلفه «NET Aspire SDK. » زیر برگه «اجزاء فردی» در نصبکننده ویژوال استودیو انتخاب شده باشد: توجه داشته باشید که باید مراحل باقیمانده در این دستورالعملها را برای بهروزرسانی به پیشنمایش 2 دنبال کنید.
- اگر از ویندوز استفاده میکنید و ویژوال استودیو 2022 نسخه 17.8.x را نصب کردهاید اما قصد دارید تنها ازNET Aspire. از طریق .NET CLI (dotnet) استفاده کنید، SDK .NET 8.0.100 را با استفاده از نصبکننده مستقل دانلود و نصب کنید
- اگر از macOS یا لینوکس استفاده میکنید، SDK .NET 8.0.100 را دانلود و نصب کنید.
- از طریق ترمینال، دستورات زیر را برای بهروزرسانی NET Aspire. اجرا کنید
dotnet workload update
dotnet workload install aspire
توجه داشته باشید که اگر پیشنمایش نسخه 1 NET Aspire. را قبلاً نصب کردهاید، ممکن است پیامهایی دریافت کنید که به شما اطلاع میدهند بار کاری قبلاً نصب شده است. این پیامها میتوانند بدون نگرانی نادیده گرفته شوند
5. برای دستورالعملهای دقیق در مورد نصب NET Aspire. به مستندات مراجعه کنید.
پس از بهروزرسانی، میتوانید با اجرای دستور dotnet workload list نسخه بهروزرسانیشده را ببینید (توجه داشته باشید: نسخه ویژوال استودیو شما ممکن است متفاوت باشد):
Installed Workload Id Manifest Version Installation Source
----------------------------------------------------------------------------------------------
aspire 8.0.0-preview.2.23619.3/8.0.100 SDK 8.0.100, VS 17.9.34310.174
بهروزرسانی برنامههای موجود
برای برنامههای NET Aspire. موجود، پس از انجام مراحل فوق برای دریافت آخرین نسخه ، شما باید ارجاعات بسته برای هر جزء Aspire را تغییر دهید. تمام ارجاعات بسته Aspire (میزبانی و اجزاء) را به 8.0.0-preview.2.23619.3 بهروزرسانی کنید، به عنوان مثال میزبانی به این صورت تغییر خواهد کرد:
<PackageReference Include="Aspire.Hosting" Version="8.0.0-preview.2.23619.3" />
همچنین تمام بستههای دیگری که ارجاع داده شدهاند باید به نسخه پیشنمایش 2 بهروز شوند. اگر از ویژوال استودیو استفاده میکنید، میتوانید از مدیر بسته NuGet استفاده کنید و تمام بستههایی که از طریق IDE استفاده میشوند را بهروز کنید (مطمئن شوید که چکباکس پیشنمایش را در رابط کاربری علامتزدهاید).
تغییرات API
علاوه بر این، ما تغییراتی در API میزبانی در پیشنمایش 2 ایجاد کردهایم. در کدهای موجود، فراخوانیهای API مانند builder.AddPostgresContainer(...) باید اکنون به builder.AddPostgres(...) تغییر کنند تا همان رفتار را حفظ کنند (تغییرات مشابهی نیز برای سایر انواع منابع وجود دارد). ما میخواستیم تمایزی بین مفهوم یک نوع منبع «ابسترکت» مانند یک سرور Redis (به عنوان مثال، AddRedis(...))، و یک کانتینر که Redis را اجرا میکند (به عنوان مثال، AddRedisContainer(...)) ایجاد کنیم. سازندگان برای انواعی مانند RedisContainer از متدهای توسعهای مانند WithEnvironment(...) و WithVolumeMount(...) پشتیبانی میکنند در حالی که سازندگان برای انواعی مانند RedisServer از این قبیل سفارشیسازیها پشتیبانی نمیکنند، زیرا انتظار میرود که ابزار استقرار برای برنامه NET Aspire. از یک نوع منبع مدیریتشده در محیط ابری هدف استفاده کند که از سفارشیسازیها به این شکل پشتیبانی نمیکند.
علاوه بر این، ما متدهای builder.AddXYZConnection(...) را که XYZ نام یک نوع منبع است، حذف کردهایم. این توسعهها پوششهای بسیار نازکی بر روی افزودن یک متغیر محیطی مانند ConnectionString_myresource بودند.
بهروزرسانیهای داشبورد
ما واکنش شگفتانگیزی به داشبورد در نسخه اولیه پیشنمایش NET Aspire.دریافت کردیم! مردم واقعاً از اینکه میتوانند به راحتی ببینند چگونه NET Aspire. به طور پیشفرض به نمایانسازی برنامهها کمک میکند، همراه با وضعیت تمام منابع جداگانهای که سیستم توزیعشده را تشکیل میدهند، هیجانزده هستند. بر اساس بازخورد شما، ما تغییرات زیر را در داشبورد در پیشنمایش 2 ایجاد کردهایم.
نمای ترکیبی جدید برای منابع و گزارشهای کنسول
در پیشنمایش 1، صفحات جداگانهای در داشبورد برای مشاهده جزئیات پروژهها، اجراییها و کانتینرهایی که به عنوان بخشی از یک برنامه NET Aspire. پیکربندی شدهاند وجود داشت. اینها در پیشنمایش 2 به یک صفحه «منابع» ترکیب شدهاند، که دیدن وضعیت و جزئیات کلیدی تمام منابع شما را در یک مکان بسیار آسانتر میکند. ستون «نام» اکنون شامل شناسه فرآیند برای پروژهها و اجراییها، و شناسه کانتینر برای کانتینرها میشود. ستون «منبع» جزئیات مسیر برای پروژهها و اجراییها را نشان میدهد، و برای کانتینرها نام و برچسب تصویر نمایش داده میشود، همراه با پورت کانتینر اگر یکی از آنها فاش شده باشد.
گزارشهای کنسول نیز به همین شیوه درمان شدند، که انتخاب هر منبع برای مشاهده گزارشهای کنسول از یک صفحه واحد را آسانتر میکند:
پنل جزئیات قابل اتصال
یک پنل جزئیات جدید اکنون برای نمایش اطلاعات بیشتر موارد مرتبط استفاده میشود، مانند متغیرهای محیطی برای یک منبع، یا جزئیات یک گزارش ساختاریافته یا دوره ردیابی. این پنل میتواند به پایین یا کنار نمای فعلی متصل شود، که تعویض بین جزئیات موارد مختلف نشان داده شده در نمای فعلی را سادهتر میکند.
نام دستهبندی گزارش به نمای گزارشهای ساختاریافته اضافه شده است
نام دستهبندی برای یک پیام گزارش اکنون در پنل جزئیات نمای گزارشهای ساختاریافته نمایش داده میشود، که مشاهده منبع پیام را ساده میکند:
درخواستهای خروجی به مقاصد شناختهشده با نام به جای آدرس اینترنتی نمایش داده میشوند
درخواستهای خروجی به مقاصد شناختهشده مانند سایر منابع و نقاط انتهایی که توسط ویژوال استودیو برای پشتیبانی از تجربه توسعه میزبانی میشوند (مانند لینک مرورگر)، اکنون به صورت خودکار حل و به نام مناسب در نمای ردیابیها نامگذاری میشوند:
بهروزرسانیهای میزبانی و ارکستراسیون پیکربندی آرگومانهای راهاندازی کانتینر
شما اکنون میتوانید آرگومانهایی را برای ارسال به کانتینرهایی که در پروژههای AppHost شما پیکربندی شدهاند با استفاده از روش IResourceBuilder<ContainerResource>.WithArgs پیکربندی کنید. این آرگومانها هنگام راهاندازی به کانتینر ارسال میشوند. مثال زیر نمونهای از استفاده از این قابلیت است که از نمونه کانتینرهای پایگاه داده که به تازگی اضافه شده است، گرفته شده است.
var builder = DistributedApplication.CreateBuilder(args);
var addressBookDb = builder.AddSqlServerContainer("sqlserver")
// Mount the init scripts directory into the container.
.WithVolumeMount("./sqlserverconfig", "/usr/config", VolumeMountType.Bind)
// Mount the SQL scripts directory into the container so that the init scripts run.
.WithVolumeMount("../DatabaseContainers.ApiService/data/sqlserver", "/docker-entrypoint-initdb.d", VolumeMountType.Bind)
// Run the custom entrypoint script on startup.
.WithArgs("/usr/config/entrypoint.sh")
.AddDatabase("AddressBook");
کشف خدمات بین تمام انواع منابع
اکنون امکان پیکربندی کانتینرها و اجراییها برای نمایش نقاط انتهایی خدمات با استفاده از روش WithServiceBinding وجود دارد، و سپس ارجاع دادن آنها به عنوان مراجع به سایر منابع با استفاده از WithReference و داشتن نقاط انتهایی خدمات آنها به عنوان پیکربندی برای کشف خدمات تزریق شده است.
var builder = DistributedApplication.CreateBuilder(args);
// Add customer API container built by partner team
var customerApi = builder.AddContainer("customerapi", image: "contoso.com/eshop/customers")
.WithServiceBinding(containerPort: 8080, scheme: "http");
// Configure our storefront web project to reference the customer service API so that it can
// reference the service by name instead of by IP address, e.g. http://customerapi
var storeFront = builder.AddProject<Projects.Contoso_eShop_Storefront>("storefront")
.WithReference(customerApi);
افزودن پروژهها بر اساس مسیر فایل پروژه
مواردی وجود دارند که افزودن ارجاعات پروژه از پروژه AppHost به پروژههای خدمات به عنوان ارجاعات پروژه ممکن است مطلوب نباشد. اکنون امکان افزودن پروژهها به عنوان منابع بدون یک ارجاع پروژه با صرفاً ارسال مسیر فایل پروژه به روش AddProject وجود دارد. این میتواند در موقعیتهای پیچیدهتر چیدمان منبع، مانند زمان استفاده از زیرماژولهای گیت برای وارد کردن محتویات مخازن تیمهای شریک، ادغام پروژهها از خارج از راهحل فعلی را آسانتر کند.
var builder = DistributedApplication.CreateBuilder(args);
var pathBasedProject = builder.AddProject(
name: "customerapi",
// The project will be resolved relative to the AppHost project directory
projectPath: "../../submodules/customerapi/src/CustomerApi/CustomerApi.csproj");
ارجاع دادن به نقاط انتهایی URI موجود برای پیکربندی کشف خدمات
یک الگوی دیگر برای ارجاع دادن خدمات از خارج از راهحل فعلی، و حتی مدیریت شده توسط یک تیم متفاوت، میتواند استفاده از یک نمونه موجود از خدمات که به طور ویژه برای اهداف توسعه میزبانی شدهاند، باشد. اکنون میتوانید مستقیماً به خدمات مبتنی بر HTTP ارجاع دهید و منبع مصرفکننده را با مقادیر مورد نیاز برای کشف خدمات پیکربندی کنید:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache");
builder.AddProject<Projects.AspireApp30_Web>("webfrontend")
.WithReference(cache)
// The app can reference this service simply via http://apiservice
.WithReference("apiservice", new Uri("http://apiservice.v2.dev.contoso.com"));
پشتیبانی از افزودن برنامههای Node.js به عنوان منابع
پشتیبانی برای پیکربندی برنامههای مبتنی بر Node.js در یک پروژه AppHost .NET Aspire اکنون شامل شده است. روشهای AddNodeApp و AddNpmApp میتوانند برای به راحتی گنجاندن برنامههای Node.js در یک پروژه AppHost Aspire استفاده شوند، مثلاً یک فرانتاند مبتنی بر React. برنامههای Node.js گنجانده شده میتوانند در کشف خدمات و پیکربندی رشته اتصال شرکت کنند و آدرس اینترنتی نقطه انتهایی OTLP داشبورد تزریق خواهد شد تا OpenTelemetry را فعال کند. برای پیکربندی برنامه برای استقرار به عنوان یک کانتینر، روش AsDockerFileInManifest را بر روی منبع بازگشتی فراخوانی کنید.
نمونه Aspire با Node.js بهروزرسانی شده است تا از این پشتیبانی داخلی استفاده کند و پیکربندی برنامه Node.js برای خروجی ردیابیهای OpenTelemetry به داشبورد Aspire را نشان دهد.
avar builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedisContainer("cache");
var apiservice = builder.AddProject<Projects.ApiService>("apiservice");
builder.AddNodeApp("webapp", "../webapp/app.js")
.WithReference(apiservice)
.WithReference(cache)
// Dynamically assign an http port for the the Node.js app.
// The port will be set in the 'PORT' environment variable.
.WithServiceBinding(scheme: "http", env: "PORT")
.AsDockerfileInManifest();
پروژهها اکنون به طور مداوم از پورت مشخص شده در پروفایل راهاندازیشان استفاده میکنند
هنگام راهاندازی یک پروژه AppHost، Aspire.Hosting پروکسیهای معکوسی را در مقابل تمام خدمات پیکربندیشده راهاندازی میکند تا اموری مانند تعادلبندی بار به نمونههای پیکربندیشده انجام شود. نمونههای خود برنامههای پروژه به طور تصادفی پورتهایی برای شنیدن اختصاص داده میشوند و پروکسیها درخواستهای مشتری را به آن پورت ارسال میکنند. پروکسیها اکنون از پورت مشخص شده در پروفایل راهاندازی پروژه (یعنی ملکیت "applicationUrl" در فایل Properties/launchSettings.json) به عنوان پورت ورودی هنگام اجرا به صورت محلی در طول توسعه استفاده خواهند کرد. این بدان معناست که URL محلی که برای دسترسی به یک پروژه استفاده میکنید اکنون باید در طول توسعه ثابت باشد، زیرا توسط پروفایل راهاندازی پروژه کنترل میشود، چه پروژه را مستقیماً راهاندازی کنید، یا از طریق یک پروژه AppHost با یا بدون نمونههای تکراری راهاندازی کنید.
بهروزرسانیهای اجزاء
بستههای جزء اکنون دارای آیکونهای مجزا هستند
بیشتر بستههای NuGet برای اجزاء Aspire اکنون دارای نمادهای نمایندگی هستند تا شناسایی آنها در دیالوگ مدیر بسته NuGet را آسانتر کند و کمی تنوع بصری به تجربه بیاورد:
پشتیبانی اجزاء و میزبانی برای MySqlConnector
با تشکر از عضو جامعه بردلی گرینجر، نویسنده کتابخانه محبوب MySqlConnector برای MySQL، اکنون یک جزء Aspire برای MySQL وجود دارد، که شامل پشتیبانی برای پیکربندی، DI، ردیابی، ثبت گزارش و بررسیهای سلامت است، که دسترسی قابل مشاهده و مقاوم به پایگاههای داده MySQL از برنامههای خدمات شما را امکانپذیر میکند.
var builder = WebApplication.CreateBuilder(args);
// Add service defaults & Aspire components.
builder.AddServiceDefaults();
builder.AddMySqlDataSource("catalog");
ar app = builder.Build();
app.MapGet("/catalog", async (MySqlConnection db) =>
{
const string sql = """
SELECT Id, Name, Description, Price
FROM catalog
""";
return await db.QueryAsync<CatalogItem>(sql);
});
app.MapDefaultEndpoints();
app.Run();
علاوه بر این، پشتیبانی Aspire.Hosting برای منابع MySQL اضافه شده است، که راهاندازی یک کانتینر MySQL برای توسعه محلی را آسانتر از همیشه میکند، یا اتصال به یک نمونه موجود MySQL را فراهم میآورد.
var builder = DistributedApplication.CreateBuilder(args);
var catalogDb = builder.AddMySqlContainer("mysql")
// Mount the SQL scripts directory into the container so that the init scripts run.
.WithVolumeMount("../DatabaseContainers.ApiService/data/mysql", "/docker-entrypoint-initdb.d", VolumeMountType.Bind)
.AddDatabase("catalog");
پشتیبانی اجزاء و میزبانی برای MongoDB
یک مشارکت دیگر توسط جامعه، این بار توسط ایلتون پینتو، پشتیبانی برای MongoDB را از طریق بسته جدید Aspire.MongoDB.Driver به Aspire آورده است. این جزء از کتابخانه مشتری MongoDB.Driver استفاده میکند و، مانند جزء MySQL، پشتیبانی از پیکربندی، DI، ردیابی، ثبت گزارش و بررسیهای سلامت را دارد.
var builder = WebApplication.CreateBuilder(args);
// Add service defaults & Aspire components.
builder.AddServiceDefaults();
builder.AddMongoDBClient("mydatabase");
ar app = builder.Build();
app.MapGet("/", async (IMongoClient client) =>
{
// Use the client here
...
});
app.MapDefaultEndpoints();
app.Run();
در بخش میزبانی، میتوانید یک کانتینر MongoDB را با استفاده از AddMongoDBContainer پیکربندی کنید، یا به یک نمونه موجود با استفاده از AddMongoDBConnection اشاره کنید.
var builder = DistributedApplication.CreateBuilder(args);
var mongodb = builder.AddMongoDBContainer("mongodb")
.AddDatabase("mydatabase");
var myService = builder.AddProject<Projects.MyService>()
.WithReference(mongodb);
اجزاء SDK آژور در Aspire اکنون به صورت پیشفرض ردیابی توزیعشده را فعال میکنند
اجزاء Aspire برای SDK آژور اکنون به طور پیشفرض دارای ردیابی توزیعشده هستند (به جز برای جزء Azure Service Bus). استفاده از این اجزاء برای اتصال به خدمات آژور پشتیبانی شده در حال حاضر به طور خودکار به خروجی ردیابی توزیعشده برنامه شما کمک میکند و به مشاهدهپذیری آن کمک میکند.
بهروزرسانیهای استقرار
یکی از ویژگیهای عالی NET Aspire. ، توانایی ابزارهای استقرار برای افزودن پشتیبانی از برنامه توزیعشدهای است که شما در یک پروژه Aspire AppHost توصیف و ترکیب میکنید. هنوز روزهای اولیه در این فضا است اما ما در حال حاضر شاهد کارهای هیجانانگیزی هستیم
Aspir8: یک ابزار توسعهیافته توسط جامعه برای استقرار برنامههای NET Aspire. در کوبرنتیز
ما بازخوردهای زیادی از افرادی دیدیم که به پشتیبانی برای استقرار برنامههای Aspire در کوبرنتیز علاقهمند بودند. در یک نمایش فوقالعاده دیگر از توسعه محرک جامعه، Aspirate (Aspir8) توسط کاربر GitHub، prom3theu5، ایجاد شد. این ابزار جهانی NET. از منیفست Aspire برای خودکارسازی استقرار برنامههای Aspire در خوشههای کوبرنتیز استفاده میکند. حتماً برای جزئیات بیشتر، README پروژه را بررسی کنید و همراه با مسئله GitHub در مخزن Aspire پیش بروید.
پیشرفتهای Aspire CLI توسعهدهنده آژور (azd)
CLI توسعهدهنده آژور (azd) یک ابزار متنباز است که اجرای برنامههای شما در ابر بر روی آژور را آسانتر میکند. ما در تلاش هستیم تا اطمینان حاصل کنیم که azd سریعترین و سادهترین راه برای تهیه و استقرار یک برنامه Aspire در آژور در عرض چند دقیقه را فراهم میکند. در این نسخه ما همچنان عمدتاً به برنامههای کانتینری آژور هدفگذاری میکنیم.
در این نسخه، ما چند ویژگی جدید برای پشتیبانی بهتر از استقرارهای Aspire اضافه کردیم:
• استقرار پروژههای Dockerfile که با AsDockerFileInManifest پیکربندی شدهاند.
• استقرار اجزاء مرتبط با Dapr. این بیشتر در بخش بعدی زیر توضیح داده شده است.
• پشتیبانی اولیه برای پیکربندی پایپلاین برای تنظیم متغیرهای استقرار CI/CD برای برنامههای Aspire.
و چند پیشرفت قابل توجه دیگر انجام شده است:
احراز هویت کاربر مدیر به صورت پیشفرض برای Azure Container Registry تهیه شده فعال شده است. این از شکستهای مرتبط با اجازه برای کاربرانی که مدیران کلاسیک در اشتراکهایی که کاملاً به RBAC مهاجرت نکردهاند، جلوگیری میکند.
دیگر نیازی به نصب ابزار داکر وقتی فقط با استفاده از dotnet publish پروژههای NET. را ساخته و منتشر میکنید، نیست.
آخرین نسخه azd (1.5.1) را با نصب یا بهروزرسانی CLI توسعهدهنده آژور خود دریافت کنید.
به روز رسانی برای پشتیبانی Dapr
برای کسانی که میخواهند از Aspire همراه با Dapr استفاده کنند، تعدادی از بهبودها در پیشنمایش 2 انجام شده است.
دیگر نیازی به تعیین شناسه برنامه Dapr نیست
IDهای برنامه Dapr اکنون به طور پیشفرض به نامهای منبع داده شده به پروژههای مربوطه خود تنظیم میشوند. علاوه بر این، نام منبع داده شده به کنارگذار Dapr اکنون از نام پروژه مربوطه خود گرفته شده است، در حالی که در پیشنمایش 1، نام منبع خود ID برنامه بود. این امکان میدهد که نام منبع پروژه و ID برنامه همان مقدار باشند. همچنان میتوانید ID برنامه را به صورت صریح به مقدار دلخواه تنظیم کنید، اگر مایل باشید.
var builder = DistributedApplication.CreateBuilder(args);
// The Dapr application ID will default to "servicea".
builder.AddProject<Projects.DaprServiceA>("servicea")
.WithDaprSidecar();
// The Dapr application ID is explicitly set to "serviceb-dapr".
builder.AddProject<Projects.DaprServiceB>("serviceb")
.WithDaprSidecar("serviceb-dapr");
اجزاء Dapr به عنوان منابع درجه اول Aspire
پیشنمایش NET Aspire2. اجزاء Dapr را به عنوان منابع درجه اول معرفی میکند که به Aspire اجازه میدهد تصمیمات هوشمندانهتری هنگام اجرای برنامههای Dapr بگیرد و همچنین امکان استفاده از سایر ابزارها، مانند ابزارهای مورد استفاده برای استقرار را فراهم میکند.
در پیشنمایش 1، ممکن است منابع Dapr را برای کنارگذارها با استفاده از DaprSidecarOptions پیکربندی کنید، جایی که کنارگذار تمام اجزاء یافت شده در دایرکتوری منابع را بارگذاری میکند.
var builder = DistributedApplication.CreateBuilder(args);
// Configure service A's sidecar to load components from the resources path.
builder.AddProject<Projects.DaprServiceA>("servicea")
.WithDaprSidecar(
new DaprSidecarOptions
{
AppId = "service-a",
ResourcesPaths = ImmutableHashSet<string>.Create("<path to resources directory>")
});
// Configure service B's sidecar to load components from the resources path.
builder.AddProject<Projects.DaprServiceB>("serviceb")
.WithDaprSidecar(
new DaprSidecarOptions
{
AppId = "service-b",
ResourcesPaths = ImmutableHashSet<string>.Create("<path to resources directory>")
});
در پیشنمایش 2، میتوانید منابع جزء Dapr فردی ایجاد کنید و آنها را از پروژههایی که واقعاً از آنها استفاده میکنند (از طریق WithReference()) مرجعدهی کنید. Aspire اطمینان حاصل میکند که کنارگذارها برای بارگذاری اجزاء مرجعدار خود پیکربندی شدهاند.
var builder = DistributedApplication.CreateBuilder(args);
var stateStore = builder.AddDaprComponent(
"statestore",
"state.redis",
new DaprComponentOptions { LocalPath = "<path to state store YAML file>" });
var pubSub = builder.AddDaprComponent(
"pubsub",
"pubsub.redis",
new DaprComponentOptions { LocalPath = "<path to pub-sub YAML file>" });
builder.AddProject<Projects.DaprServiceA>("servicea")
.WithDaprSidecar()
.WithReference(stateStore)
.WithReference(pubSub);
builder.AddProject<Projects.DaprServiceB>("serviceb")
.WithDaprSidecar()
.WithReference(pubSub);
برای اجزاء پایه مانند فروشگاههای حالت و pub-sub، نیازی به ایجاد یا مشخص کردن مسیر YAML جزء محلی نیست. به جای آن، روشهای AddDaprStateStore() و AddDaprPubSub() منابع جزء Dapr از نوع «عمومی» ایجاد میکنند، که نشان میدهد Aspire باید یک جزء مناسب را به نیابت از کنارگذار Dapr هنگام اجرای برنامه پیکربندی کند.
در مثال قبلی، اگر Dapr به طور کامل بر روی دستگاه نصب شده باشد، Aspire کنارگذارها را برای استفاده از اجزاء Redis که توسط کانتینر پیشفرض Redis Dapr پشتیبانی میشوند، پیکربندی خواهد کرد. اگر در عوض، Dapr به صورت «slim» نصب شده باشد، Aspire کنارگذارها را برای استفاده از اجزاء حافظه درونی پیکربندی خواهد کرد. مزیت واقعی اعلام منابع جزء Dapr به صورت جداگانه این است که به ابزارها، هم برای توسعه محلی و هم برای استقرار، اجازه میدهد تصمیمات بهتری در مورد نحوه پیکربندی Dapr بگیرند.
پشتیبانی برای استقرار برنامههای Dapr در برنامههای کانتینری آژور (ACA) با استفاده از CLI توسعهدهنده آژور (azd)
پیشنمایش 2 منابع خاص Dapr را به منیفست برنامه مینویسد، که به ابزارهایی مانند CLI توسعهدهنده آژور (azd) امکان میدهد تصمیمات خاص Dapr را در طول استقرار بگیرند. اکنون میتوان از AZD برای استقرار و پیکربندی برنامههای NET Aspire. که از Dapr استفاده میکنند در برنامههای کانتینری آژور (ACA) استفاده کرد. هر پروژهای با یک کنارگذار Dapr، Dapr را در برنامه ACA متناظر خود فعال خواهد کرد و تنظیمات Dapr آن بازتاب خواهد کرد از خصوصیات DaprSidecarOptions زیر (اگر تنظیم شده باشد):
• AppId
• AppPort
• AppProtocol
• EnableApiLogging
• HttpMaxRequestSize
• HttpReadBufferSize
• LogLevel
اگر برنامههای شما به منابع عمومی فروشگاه حالت و pub-sub Dapr اشاره کنند، azd همچنین محیط ACA را با افزونه Redis پیکربندی خواهد کرد و پیکربندی جزء Dapr را برای استفاده از آن در برنامه شما تولید و استقرار خواهد داد. این به این معناست که برنامههای پایه Dapr بدون هیچ پیکربندی یا تهیه صریح فروشگاههای پشتیبان قابل استقرار هستند.
[!مهم] اگر برنامه شما انواع جزء Dapr فراتر از انواع فروشگاه حالت و pub-sub عمومی را اعلام کند، اینها هنوز باید به صورت دستی در محیط ACA پیکربندی شوند.
مشارکتهای جامعه
با وجود گذشت زمان کوتاهی از زمان اعلام NET Aspire. و انتشار مخزن، ما شاهد سطح بینظیری از مشارکت و کمک از جامعه NET Aspire. بودهایم. از اجزاء جدید مذکور و ابزار استقرار Aspir8 در پیشنمایش 2، تا تعداد زیادی از اجزاء مشارکتی جامعه که هنوز در دست کار هستند (مراقب پیشنمایش 3 باشید...)، مسائل دقیق و افرادی که به یکدیگر در بحثها کمک میکنند، مردم در شکلگیری آنچه Aspire خواهد شد، شرکت میکنند. ما میخواهیم یک "تشکر بزرگ" را به همه کسانی که Aspire را امتحان کرده و وقت اضافی برای مشارکت گذاشتهاند، بفرستیم.
چه چیزی در پیش است؟
ما برنامهریزی کردهایم که هر ماه یک پیشنمایش جدید Aspire منتشر کنیم در حالی که به سمت یک نسخه پایدار 8.0 در طول سهماهه دوم سال 2024 کار میکنیم. برای جزئیات نسخههای آینده به بلاگ NET. مراجعه کنید یا در پروژه Aspire در GitHub دخیل شوید. نمونههای رسمی در مخزن dotnet/aspire-samples موجود است.
خلاصه
باز هم از پاسخ شما به NET Aspire. تشکر میکنیم. ما از کار سخت برای ساخت تجربهای عالی در ساخت برنامههای توزیعشده با NET Aspire. لذت میبریم و دوست داریم شما پیشنمایش 2 را امتحان کنید و نظرات خود را به ما بگویید.
var builder = DistributedApplication.CreateBuilder(args);
var stateStore = builder.AddDaprStateStore("statestore");
var pubSub = builder.AddDaprPubSub("pubsub");
builder.AddProject<Projects.DaprServiceA>("servicea")
.WithDaprSidecar()
.WithReference(stateStore)
.WithReference(pubSub);
builder.AddProject<Projects.DaprServiceB>("serviceb")
.WithDaprSidecar()
.WithReference(pubSub);
برای افزودن دیدگاه خود، نیاز است ابتدا وارد حساب کاربریتان شوید