ASP.NET Core 10.0'daki yenilikler
Bu makalede, ASP.NET Core 10.0'daki en önemli değişiklikler, ilgili belgelerin bağlantıları ile vurgulanır.
Yeni önizleme sürümleri kullanıma sunuldukçe bu makale güncelleştirilecektir. Bu sayfa güncelleştirilene kadar Asp.Net Core duyuru sayfasına bakın.
Blazor
Bu bölümde Blazoriçin yeni özellikler açıklanmaktadır.
QuickGrid
RowClass
parametresi
Yeni RowClass
parametresini kullanarak satır öğesine göre kılavuzda bir satıra stil sınıfı uygulayın. Aşağıdaki örnekte, satır öğesini temel alan bir stil sayfası sınıfını koşullu olarak uygulamak için her satırda GetRowCssClass
yöntemi çağrılır:
<QuickGrid ... RowClass="GetRowCssClass">
...
</QuickGrid>
@code {
private string GetRowCssClass(MyGridItem item) =>
item.IsArchived ? "row-archived" : null;
}
Daha fazla bilgi için bkz. ASP.NET Core Blazor 'QuickGrid' bileşen.
Blazor betiğini statik bir web varlığı olarak kullanmak
.NET'in önceki sürümlerinde, Blazor betiği ASP.NET Core paylaşılan çerçevesine gömülü bir kaynaktan sunuluyordu. .NET 10 veya sonraki sürümlerinde, Blazor betiği otomatik sıkıştırma ve parmak izi ile statik bir web varlığı olarak sunulur.
Daha fazla bilgi için aşağıdaki kaynaklara bakın:
Yol şablonu vurguları
[Route]
özniteliği artık yol şablonunun yapısını görselleştirmeye yardımcı olmak için yol söz dizimi vurgulama özelliğini destekliyor:
Sayaç değeri için yol özniteliğinin yol şablonu deseni, söz dizimi vurgulamasını gösterir .
SignalR
Bu bölümde SignalRiçin yeni özellikler açıklanmaktadır.
Minimum API'ler
Bu bölümde en düşük API'lere yönelik yeni özellikler açıklanmaktadır.
OpenAPI
Bu bölümde OpenAPI'nin yeni özellikleri açıklanmaktadır.
OpenAPI 3.1 desteği
ASP.NET Core, .NET 10'da OpenAPI sürüm 3.1 belgeleri oluşturmaya yönelik destek ekledi. Küçük sürüm artışına rağmen, OpenAPI 3.1, OpenAPI belirtiminde önemli bir güncellemeyle birlikte gelir ve özellikle JSON Şema taslağı 2020-12için tam destek sağlar.
Oluşturulan OpenAPI belgesinde göreceğiniz bazı değişiklikler şunlardır:
- Nullable türler artık şemada
nullable: true
özelliğine sahip değil. -
nullable: true
özelliği yerine, değeri türlerden biri olaraktype
'yi içeren bir dizi olan birnull
anahtar sözcüğü vardır.
Bu özellik sayesinde, oluşturulan belgeler için varsayılan OpenAPI sürümü3.1
. Sürüm, AddOpenApi temsilci parametresindeki OpenApiVersion özelliği açıkça ayarlanarak değiştirilebilir.
builder.Services.AddOpenApi(options =>
{
// Specify the OpenAPI version to use.
options.OpenApiVersion = Microsoft.OpenApi.OpenApiSpecVersion.OpenApi3_0;
});
Derleme zamanında OpenAPI belgesi oluşturulurken, --openapi-version
MSBuild öğesinde OpenApiGenerateDocumentsOptions
ayarlanarak OpenAPI sürümü seçilebilir.
<!-- Configure build-time OpenAPI generation to produce an OpenAPI 3.0 document. -->
<OpenApiGenerateDocumentsOptions>--openapi-version OpenApi3_0</OpenApiGenerateDocumentsOptions>
OpenAPI 3.1 desteği öncelikli olarak aşağıdaki PR'da eklenmiştir.
OpenAPI 3.1'de önemli değişiklikler
OpenAPI 3.1 desteği, temel OpenAPI.NET kitaplığının yeni bir ana sürüm olan 2.0'a güncelleştirilmiş olmasını gerektirir. Bu yeni sürümde önceki sürümden ciddi değişiklikler var. Köklü değişiklikler, uygulamalar herhangi bir belge, işlem veya şema dönüştürücüsüne sahipse bu uygulamaları etkileyebilir.
En önemli değişikliklerden biri, OpenApiAny
sınıfının yerine doğrudan JsonNode
kullanılmasıdır.
OpenApiAny
kullanan transformatörlerin JsonNode
kullanacak şekilde güncelleştirilmiş olması gerekir. Aşağıdaki fark, .NET 9'dan .NET 10'a şema transformatöründeki değişiklikleri gösterir:
options.AddSchemaTransformer((schema, context, cancellationToken) =>
{
if (context.JsonTypeInfo.Type == typeof(WeatherForecast))
{
- schema.Example = new OpenApiObject
+ schema.Example = new JsonObject
{
- ["date"] = new OpenApiString(DateTime.Now.AddDays(1).ToString("yyyy-MM-dd")),
+ ["date"] = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd"),
- ["temperatureC"] = new OpenApiInteger(0),
+ ["temperatureC"] = 0,
- ["temperatureF"] = new OpenApiInteger(32),
+ ["temperatureF"] = 32,
- ["summary"] = new OpenApiString("Bracing"),
+ ["summary"] = "Bracing",
};
}
return Task.CompletedTask;
});
Bu değişikliklerin yalnızca OpenAPI sürümünü 3.0'a uygun hale getirmek için bile gerekli olduğunu unutmayın.
Yaml'de OpenAPI
ASP.NET artık oluşturulan OpenAPI belgesiniN YAML biçiminde sunulmasını destekliyor. YAML, JSON'dan daha öz olabilir ve anlaşılabildiğinde küme ayraçları ile tırnak işaretlerini gereksiz hale getirir. YAML, uzun açıklamalar için yararlı olabilecek çok satırlı dizeleri de destekler.
Bir uygulamayı oluşturulan OpenAPI belgesine YAML biçiminde hizmet vermek üzere yapılandırmak için, aşağıdaki örnekte gösterildiği gibi MapOpenApi çağrısında uç noktayı ".yaml" veya ".yml" sonekiyle belirtin:
app.MapOpenApi("/openapi/{documentName}.yaml");
Destek:
- YAML şu anda yalnızca OpenAPI uç noktasından sunulan OpenAPI için kullanılabilir.
- Derleme zamanında YAML biçiminde OpenAPI belgeleri oluşturma işlemi, gelecekteki bir önizlemede eklenir.
Bu PR'yi inceleyin; bu PR, oluşturulan OpenAPI belgesinin YAML formatında sunulmasına destek ekledi.
ProducesResponseType üzerinde yanıt açıklaması
ProducesAttribute, ProducesResponseTypeAttributeve ProducesDefaultResponseType öznitelikleri artık yanıtın açıklamasını ayarlayacak isteğe bağlı bir dize parametresi Description
kabul eder. İşte bir örnek:
[HttpGet(Name = "GetWeatherForecast")]
[ProducesResponseType<IEnumerable<WeatherForecast>>(StatusCodes.Status200OK, Description = "The weather forecast for the next 5 days.")]
public IEnumerable<WeatherForecast> Get()
{
Oluşturulan OpenAPI ise:
"responses": {
"200": {
"description": "The weather forecast for the next 5 days.",
"content": {
Topluluk katkısıSander ten Brinke🙏 tarafından
Kimlik doğrulaması ve yetkilendirme
Bu bölümde kimlik doğrulaması ve yetkilendirmeye yönelik yeni özellikler açıklanmaktadır.
Çeşitli
Bu bölümde, ASP.NET Core 10.0'daki çeşitli yeni özellikler açıklanmaktadır.
Üst düzey deyimlerle uygulamaları test etme için daha iyi destek
.NET 10 artık üst düzey deyimleri kullananuygulamaları test etme desteğine sahiptir. Daha önce geliştiricilerin test projesinin public partial class Program
'ye başvurabilmesi için Program.cs
dosyasına el ile Program class
eklemeleri gerekiyordu. C# 9'daki üst düzey deyim özelliği public partial class Program
olarak bildirilen bir Program class
oluşturduğundan gerekliydi.
.NET 10'da, programcı açıkça bildirmediyse bildirimini oluşturmak için public partial class Program
kullanılır. Ayrıca, public partial class Program
açıkça ne zaman bildirildiğini algılamak ve geliştiriciye bunu kaldırmasını önermek için bir çözümleyici eklendi.
Bu özelliğe eklenen aşağıdaki PR'ler:
RedirectHttpResult.IsLocalUrl
kullanarak URL'nin yerel olup olmadığını algılama
URL'nin yerel olup olmadığını algılamak için yeni RedirectHttpResult.IsLocalUrl(url)
yardımcı yöntemini kullanın. Aşağıdakiler doğruysa URL yerel olarak kabul edilir:
- barındırıcı veya otorite bölümü yok.
- mutlak yoluvardır.
"~/"
sanal yolları kullanan URL'ler de yereldir.
IsLocalUrl
, açık yeniden yönlendirme saldırılarınıönlemek için URL'leri yeniden yönlendirmeden önce doğrulamak için yararlıdır.
if (RedirectHttpResult.IsLocalUrl(url))
{
return Results.LocalRedirect(url);
}
Bu katkı için @martincostello teşekkür ederiz!
İlgili içerik
ASP.NET Core