این مقاله را به اشتراک بگذارید
[ad_1]
.NET 10.0 Preview 4 از دیروز در صفحه بارگیری .NET در دسترس است. نوآوری ها بر توسعه وب با API های وب جدید بر اساس هسته ASP.NET و پیشرفت در چارچوب Blazor تأثیر می گذارد.
دکتر هولگر شویشنبرگ متخصص فناوری در توسعه نرم افزار ماکسیماگو است. وی همچنین با تیم کارشناسان در www.it-visions.de ، وی همچنین در زمینه مایکروسافت ، جاوا و تکنیک های وب مشاوره و آموزش ارائه می دهد. او در کنفرانس های تخصصی سخنرانی می کند و نویسنده کتابهای تخصصی بی شماری است.
در همین زمان ، Visual Studio 2022 نسخه 17.14 در یک نسخه پایدار منتشر شد. بر خلاف قبل ، نسخه جدید نسخه 17.5 برای Visual Studio وجود ندارد ، اما نسخه 17.14 پیش نمایش 7. از آنجا که کنفرانس ساخت 2025 از مایکروسافت در سیاتل برگزار می شود و هفته آینده از 19 تا 22 ماه مه ، مایکروسافت می تواند نسخه اصلی جدیدی را در آنجا ارائه دهد. آخرین نسخه اصلی قبل از ویژوال استودیو 2022 Visual Studio 2019 بود.
به موازات .NET 10.0 ، Visual Studio 2022 نسخه 17.14 به عنوان پیش نمایش 7 منتشر شد.
(BILD: تصویر (هولگر شویشنبرگ))
JSON PATC برای System.Text.Json و ASP.NET مبتنی بر وب-APIS
ASP.NET CORE 10.0 اکنون مطابق با RFC 6902 در ارتباط با JSON Seniizer مایکروسافت ، استاندارد JSON Patch را بر عهده دارد System.Text.Json
با کمک بسته اضافی Microsoft.AspNetCore.JsonPatch.SystemTextJson
تا کنون ، جسون پچ فقط در ارتباط با کتابخانه قدیمی تر بود Newtonsoft.Json
ممکن است در مقایسه ، مایکروسافت نوید عملکرد بهبود یافته و استفاده کمتر از ذخیره سازی را در ارتباط با یک طراحی مشابه در یادداشت های انتشار می دهد Newtonsoft.Json
، از جمله به روزرسانی اشیاء و آرایه های تعبیه شده. تاکنون در دسترس نیست JSON PATCH برای اشیاء پویا زیرا Newtonsoft.Json
برای این منظور ، بازتاب ، System.Text.Json
اما باید با کامپایلر Nativeaot نیز کار کند.
یک کلاس در بسته NUGET Microsoft.aspnetcore.jsonpatch وجود دارد. JsonPatchDocument
با یک روش ApplyTo(obj)
که از یک عمل جراحی JSON به شیء منتقل شده استفاده می کند ، مانند کد زیر از یادداشت های انتشار:
// Original object
var person = new Person
{
FirstName = "John",
LastName = "Doe",
Email = "johndoe@gmail.com",
PhoneNumbers = [new() { Number = "123-456-7890", Type = PhoneNumberType.Mobile }],
Address = new Address
{
Street = "123 Main St",
City = "Anytown",
State = "TX"
}
};
// Raw JSON patch document
string jsonPatch = """
[
{ "op": "replace", "path": "/FirstName", "value": "Jane" },
{ "op": "remove", "path": "/Email"},
{ "op": "add", "path": "/Address/ZipCode", "value": "90210" },
{ "op": "add", "path": "/PhoneNumbers/-", "value": { "Number": "987-654-3210", "Type": "Work" } }
]
""";
// Deserialize the JSON patch document
var patchDoc = JsonSerializer.Deserialize>(jsonPatch);
// Apply the JSON patch document
patchDoc!.ApplyTo(person);
// Output updated object
Console.WriteLine(JsonSerializer.Serialize(person, serializerOptions));
کد نتیجه زیر را ایجاد می کند:
Output:
{
"firstName": "Jane",
"lastName": "Doe",
"address": {
"street": "123 Main St",
"city": "Anytown",
"state": "TX",
"zipCode": "90210"
},
"phoneNumbers": [
{
"number": "123-456-7890",
"type": "Mobile"
},
{
"number": "987-654-3210",
"type": "Work"
}
]
}
گرد برای نوآوری های قبلی
از آنجا که ASP.NET Core 10.0 Preview 3 ، پارامترها نیز در حداقل API های وب تأیید شده اند. در صورتی که پارامترها یک نوع رکورد باشند ، در پیش نمایش 4 نیز کار می کند.
توجه به اسناد XML که قبلاً معرفی شده بود در اسناد OpenAPI اکنون می تواند به نظرات XML از مجامع دیگر گسترش یابد. در یادداشت های یادداشت ها ، مایکروسافت یک مثال کد را نشان می دهد که نظرات XML از مونتاژ SDK Microsoft.AspNetCore.Http
یکپارچه:
'%(RootDir)%(Directory)%(Filename).xml')"
Condition="'%(ReferencePath.Filename)' == 'Microsoft.AspNetCore.Http.Abstractions'"
KeepMetadata="Identity;HintPath" />
داده های تشخیصی برای Blazor WebAnsembly
نوع مبتنی بر گروه Webass از Blazor ، که به عنوان یک برنامه تک صفحه ای در مرورگر وب اجرا می شود ، عملکرد جدیدی بزرگتر به دست می آورد: توسعه دهندگان می توانند داده های تشخیصی را برای عملکرد ، حافظه و معیارهای مختلف در مدت زمان جمع آوری کنند. برای انجام این کار ، شما باید در نسخه فعلی ابزارهای ساخت Wobassembly .NET را نصب کنید (dotnet workload install wasm-tools
) و در پرونده پروژه ورودی های جدول زیر را از یادداشت های انتشار:
دارایی |
پیش فرض |
مقدار را روی … |
شرح |
|
دروغ |
درست |
پشتیبانی از ردیابی عملکرد WebAssembly را امکان پذیر می کند. |
|
هیچ کدام |
همه |
ابزار دقیق لازم برای پروفایل نمونه برداری را فعال می کند. |
|
دروغ |
درست |
پشتیبانی EventPipe را فعال می کند. |
|
دروغ |
درست |
پشتیبانی System.Diagnostics.Metrics را فعال می کند. |
سپس می توانید به داده های تشخیصی توسط JavaScript API دسترسی پیدا کنید:
// Collect a performance profile using CPU sampling for a specified duration.
globalThis.getDotnetRuntime(0).collectCpuSamples({durationSeconds: 60});
// Collect metrics for a specified duration.
globalThis.getDotnetRuntime(0).collectPerfCounters({durationSeconds: 5});
// Collect a memory dump.
globalThis.getDotnetRuntime(0).collectGcDump();
نتیجه یک پرونده .etnettrace است که می تواند در ویژوال استودیو مشاهده شود. از طرف دیگر ، می توانید از ابزارهای عملکرد مرورگر وب نیز استفاده کنید.
مرورگر Edge داده های عملکرد گروه WebASS را نشان می دهد.
(BILD: مایکروسافت)
قابلیت همکاری بین C# و JavaScript
در Blazor ، مایکروسافت رابط هایی را برای قابلیت همکاری بین C# و JavaScript گسترش می دهد (IJSRuntime
با IJSObjectReference
با IJSInProcessRuntime
وت IJSInProcessObjectReference
) برای اعضای جدید. InvokeNew()
وت InvokeNewAsync()
نمونه ای از یک شی JavaScript ایجاد کنید. همچنین روش هایی برای خواندن خصوصیات شیء وجود دارد (GetValue()
وت GetValueAsync()
) و برای تنظیم (SetValue()
وت SetValueAsync()
).
تاکنون فقط می توانید توابع موجود در JavaScript را از C# دریافت کنید Invoke()
با InvokeVoid()
با InvokeAsync()
وت InvokeVoidAsync()
فراخوانی در بعضی موارد ، روشهای جدید قابلیت تعامل از این کار اجتناب می کنید که باید یک عملکرد JavaScript بنویسید. درعوض ، اکنون می توانید اشیاء تولید کنید و مقادیر را مستقیماً بخوانید و بنویسید. برای کلاس JavaScript
window.TestClass = class {
constructor(text) {
this.text = text;
}
getTextLength() {
return this.text.length;
}
}
یک مثال کد را در یادداشت های نسخه ، استفاده از روش های جدید نشان می دهد:
var jsObj = await JSRuntime.InvokeNewAsync("jsInterop.TestClass", "Blazor!");
var text = await jsObj.GetValueAsync("text");
var textLength = await jsObj.InvokeAsync("getTextLength");
[ad_2]
لینک منبع