X

.NET 10.0 پیش نمایش 4 بر توسعه وب تمرکز دارد

[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: تصویر (هولگر شویشنبرگ))

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" />
  


نوع مبتنی بر گروه 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: مایکروسافت)

در 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]

لینک منبع

Categories: اخبار
تیوبر: لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است. چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است و برای شرایط فعلی تکنولوژی مورد نیاز و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد.