.NET 10.0 Önizleme 4, web geliştirmeye odaklanır

.NET 10.0 Önizleme 4, dünden beri .net indirme sayfasında indirilebilir. Yenilikler, ASP.NET çekirdeğine dayanan yeni web arıları ve Blazor çerçevesindeki iyileştirmelerle Web'in gelişimini etkiler.

Holger Schwichtenberg, Maximago yazılımının geliştirilmesinde baş teknoloji uzmanıdır. Www.it- visionions.de'deki uzman ekibi ile Microsoft, Java ve Web Teknikleri alanında ayrıca tavsiye ve eğitim sunmaktadır. Uzman konferanslarda dersler tutar ve çok sayıda uzman kitabın yazarıdır.

Aynı zamanda, Visual Studio 2022 sürüm 17.14 istikrarlı bir versiyonda yayınlandı. Daha önce aksine, Visual Studio için yeni bir önizleme sürümü 17.5 yoktur, ancak 17.14 önizleme sürüm 7. Microsoft'un 2025 yılı konferansından Seattle'da ve önümüzdeki hafta 19-22 Mayıs arasında çevrimiçi olarak gerçekleşir, Microsoft orada yeni bir ana sürüm sunabilir. Visual Studio 2022'den önceki son büyük sürüm Visual Studio 2019'du.

Visual Studio 2022

Visual Studio 2022

.NET 10.0'a paralel olarak, Visual Studio 2022 sürüm 17.14 önizleme 7 olarak yayınlandı.

(Resim: Ekran görüntüsü (Holger Schwichtenberg))

ASP.NET Core 10.0 şimdi Microsoft'un JSON Seniizer ile ilgili olarak RFC 6902'ye göre JSON Yamasının standardını yakın System.Text.Json Ek paketin yardımıyla Microsoft.AspNetCore.JsonPatch.SystemTextJson

Şimdiye kadar, Json Patch sadece en eski kütüphaneyle ilgiliydi Newtonsoft.Json olası. Buna karşılık Microsoft, sürüm notlarında benzer bir tasarıma göre gelişmiş performans ve daha az arşivleme kullanımı vaat ediyor Newtonsoft.Jsondahil edilen nesnelerin ve dizilerin güncellenmesi dahil. Şimdiye kadar mevcut değil, dinamik nesneler için JSON yaması çünkü Newtonsoft.Json Bu amaçla, yansıma, System.Text.Json Ama aynı zamanda yerel derleyici ile de çalışmalıdır.

NuGet Microsoft.aspnetcore.jsonpatch paketinde bir sınıf var. JsonPatchDocument<T> Bir yöntemle ApplyTo(obj)Sürüm notlarından aşağıdaki kodda olduğu gibi, aktarılan nesnede bir JSON yama işlemi kullanan:


// Original object
var person = new Person
{
    FirstName = "John",
    LastName = "Doe",
    Email = "[email protected]",
    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<JsonPatchDocument<Person>>(jsonPatch);

// Apply the JSON patch document
patchDoc!.ApplyTo(person);

// Output updated object
Console.WriteLine(JsonSerializer.Serialize(person, serializerOptions));

Kod aşağıdaki sonucu oluşturur:


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 önizleme 3'ten bu yana, parametreler minimum web arılarında da doğrulanmıştır. Bu aynı zamanda parametreler bir kayıt türse önizleme 4'te de çalışır.

Openapi belgelerindeki XML belgelerinin daha önce tanıtılan değerlendirilmesi artık diğer meclislerden XML yorumlarına genişletilebilir. Notlarda Microsoft, XML'in SDK Meclisi'nden yorumladığı bir kod örneği gösterir Microsoft.AspNetCore.Http Entegre:


<Target Name="AddOpenApiDependencies" AfterTargets="ResolveReferences">
  <ItemGroup>
    <!-- Include XML documentation for ProblemDetails -->
    <AdditionalFiles
      Include="@(ReferencePath->'%(RootDir)%(Directory)%(Filename).xml')"
      Condition="'%(ReferencePath.Filename)' == 'Microsoft.AspNetCore.Http.Abstractions'"
      KeepMetadata="Identity;HintPath" />
  </ItemGroup>
</Target>

Web tarayıcısında bir sayfa uygulama olarak çalışan Ensemble Webass'a dayanan Blazor'un varyantı yeni bir işlev elde eder: Geliştiriciler, performans, bellek ve çeşitli metrikler için teşhis verileri toplayabilir. Bunu yapmak için, mevcut sürümde .NET Wobassembly araçlarını kurmak gerekir (dotnet workload install wasm-tools) ve proje dosyasında, sürüm notlarından aşağıdaki tablonun öğeleri:

Mülk

önceden tanımlanmış

Değer belirleyin …

Tanım

YANLIŞ

GERÇEK

WebAssembly Performans Parçası için desteği etkinleştirin.

Hiç kimse

Tüm

Örnekleme profilleri için gerekli enstrümantasyonu etkinleştirin.

YANLIŞ

GERÇEK

Eventpipe desteğini etkinleştirin.

YANLIŞ

GERÇEK

Etkinleştir System.Diagnostics.Metrics Desteği.

Böylece JavaScript API üzerinden teşhis verilerine erişebilirsiniz:


// 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();

Sonuç, Visual Studio'da görüntülenebilen bir .etNetTrace dosyasıdır. Alternatif olarak, web tarayıcısı performans araçlarını da kullanabilirsiniz.

Performans verilerinin WebAssembly

Performans verilerinin WebAssembly

Kenar tarayıcısı, Webass topluluğunun performansı hakkındaki verileri gösterir.

(Resim: Microsoft)

Blazor'da Microsoft, C# ve JavaScript arasındaki birlikte çalışabilirlik için arayüzleri genişletir (IJSRuntime,, IJSObjectReference,, IJSInProcessRuntime VE IJSInProcessObjectReference) yeni üyeler için. InvokeNew() VE InvokeNewAsync() Bir JavaScript nesnesinin bir örneğini oluşturun. Nesnelerin özelliklerini okumak için yöntemler de vardır (GetValue() VE GetValueAsync()) ve set (SetValue() VE SetValueAsync()).

Şimdiye kadar JavaScript'te işlevler alabilirsiniz. Invoke(),, InvokeVoid(),, InvokeAsync() VE InvokeVoidAsync() Arama. Bazı durumlarda, yeni birlikte çalışabilirlik yöntemleri bir JavaScript işlevi yazmaktan kaçınır. Bunun yerine, artık nesneler oluşturabilir ve doğrudan değerleri okuyabilir ve yazabilirsiniz. JavaScript sınıfı için


window.TestClass = class {
  constructor(text) {
    this.text = text;
  }

  getTextLength() {
    return this.text.length;
  }
}

Sürüm notlarındaki bir kod örneğini gösterir, yeni yöntemlerin kullanımı:


var jsObj = await JSRuntime.InvokeNewAsync("jsInterop.TestClass", "Blazor!");
var text = await jsObj.GetValueAsync<string>("text");
var textLength = await jsObj.InvokeAsync<int>("getTextLength");


Yayımlandı

kategorisi

yazarı:

Etiketler:

Yorumlar

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir