ASP.NET Core .NET 8 Preview 4 新機能

8K Views

June 01, 23

スライド概要

.NET の 3 日間 (2 日目) ~3 コミュニティ合同イベント~
3 日間ずっと .NET を堪能しよう!
https://dotnet-communities.connpass.com/event/277869/

ASP.NET Core .NET 8 Preview 4 新機能について10分でアップデートをご紹介します!

profile-image

ヴイエムウェア株式会社 ソリューションアーキテクト本部 プリンシパルエンタープライズアーキテクト。 Microsoft で13年間、テクニカルエバンジェリストとして .NET、Visual Studio、Windows、iOS、Android、Microsoft Azure 等の開発者向け最新技術啓発活動を実施。その後、Dell、Accenture、Elastic で開発者向け技術啓発活動等を経て現職。 モダンアプリケーション開発、マルチクラウド対応、アーキテクチャ策定等を中心に、技術者向けに最新技術の啓発活動を実施中。 2019年4月〜2021年8月迄、内閣官房 IT 総合戦略室 政府 CIO 補佐官を兼務、2021年9月〜2024年3月迄、デジタル庁 PjM ユニット ソリューションアーキテクトを兼務。

シェア

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

ASP.NET Core .NET 8 Preview 4 新機能 鈴⽊ 章太郎 ヴイエムウェア株式会社 戦略ビジネス推進本部 主席エンタープライズアーキテクト ©2023 VMware, Inc.

2.

鈴⽊ 章太郎 Twitter : @shosuz ヴイエムウェア株式会社 戦略ビジネス推進本部 主席エンタープライズアーキテクト Microsoft で13年間、テクニカルエバンジェリスト として .NET、Visual Studio、Windows、iOS、 Android、Microsoft Azure 等の開発者向け 技術啓発活動に従事。 その後、Dell、Accenture を経て、Elastic で 開発者向け技術啓発活動に従事した後、現職。 2019年4⽉〜2021年8⽉まで、内閣官房 IT 総合戦略室 政府 CIO 補佐官、2021年9⽉ より、デジタル庁 省庁業務サービスグループ ソリューションアーキテクトを兼務 。 ©2023 VMware, Inc.

3.

アジェンダ • ルートツーリングの新機能 • ルート制約のパフォーマンス向上 • API 開発のための新しいアナライザー • Firefox での Blazor WebAssembly のデバッグ • .NET アセンブリのための実験的な WebCil フォーマット • BlazorWebView を読み込むための初期 URL の指定 • SPA 開発サーバーを稼働させ続けるための新オプション • HTTP/3 のデフォルトでの有効化 • Blazor コンポーネントによる SSR の効率化 • Blazor SSR でフォーム投稿を使いこなす • Blazor の名前付きエレメントルーティング • Minimal API がフォームバインディングに対応 • .http ファイルによる API 開発の効率化 • Native AOT - コンパイル時の最⼩限の API でロギングと例外処理を効率化 • ASP.NET Core メトリック • 認証と認可 ©2023 VMware, Inc. 3

4.

アジェンダ • ルートツーリングの新機能 • ルート制約のパフォーマンス向上 • API 開発のための新しいアナライザー • Firefox での Blazor WebAssembly のデバッグ • .NET アセンブリのための実験的な WebCil フォーマット • BlazorWebView を読み込むための初期 URL の指定 • SPA 開発サーバーを稼働させ続けるための新オプション • HTTP/3 のデフォルトでの有効化 • Blazor コンポーネントによる SSR の効率化 • Blazor SSR でフォーム投稿を使いこなす • Blazor の名前付きエレメントルーティング • Minimal API がフォームバインディングに対応 • .http ファイルによる API 開発の効率化 • Native AOT - コンパイル時の最⼩限の API でロギングと例外処理を効率化 • ASP.NET Core メトリックス • 認証と認可 ©2023 VMware, Inc. Preview 3まで Preview 4 4

5.

ルートツーリングの新機能 ASP.NET CoreでWebアプリケーションを構築する際の基本的な部分 • .NET 8 Preview 1ではルートツールにいくつか の新機能が追加された • これらの機能には以下のもの︓ • ルートのシンタックスハイライト • パラメータ名とルート名のオートコンプリート 機能 • ルート制約のオートコンプリート • ルートアナライザー、フィクサー • 新しいルートツールの最もエキサイティングな点の 1つは、Roslyn をベースに構築されていること • このため、Visual Studio、VS Code、または 他の IDE のいずれを使⽤する場合でも、⾮常 に使いやすくなっている ©2023 VMware, Inc. 5

6.
[beta]
ルート制約のパフォーマンス向上
ほぼすべての ASP.NET Core アプリで使⽤される強⼒で⾼性能な技術
• ルート制約は、リクエストを正しいエンドポイントにマッチングさせるのに役⽴つルーティングの⼀般的に使⽤される機能
• ランタイムパフォーマンスを最⼤化し、起動時間とメモリ使⽤量を削減するため制約にいくつかのパフォーマンス向上が施される

// エンドポイントは URL スラッグを持つリクエストにのみマッチ
例:article/my-article-name
app.MapGet("article/{name:regex(^[a-z0-9]+(?:-[a-z0-9]+)*$)}",
(string name) => { /* ... */ });
• この例では name パラメータが特定のパターンに⼀致することを保証するために正規表現制約を使⽤
• .NET 8 では制約に対していくつかの性能向上が図られる︓
•

•

•

Regex 制約がコンパイルされるようになり、実⾏時のパフォーマンスが向上。コンパイルされた正規表現は、起動時に⼀度だけコストが
かかるものの、その後のマッチングが⾼速化される
重複する制約がルート間で共有されるようになり、起動時間とメモリ使⽤量が削減された。複数のルートが同じ制約を使⽤する場合、
その制約は1回だけコンパイルする必要があり、すべてのルートで共有することができる
アルファベット制約は、ソースから⽣成された正規表現を使⽤するようになり、パフォーマンスが向上。この制約は、任意のアルファベット
⽂字にマッチし、ソースから⽣成された正規表現を使⽤する
©2023 VMware, Inc.

6

7.

API 開発のための新しいアナライザー 1 ASP.NET Core API の品質を向上させるための警告や推奨事項を提供する • .NET 8 で⼀連の新しいアナライザーを導⼊ • 例︓重複したキーが追加されると例外が発⽣する IHeaderDictionary.Add API ↓ • HeaderDictionary への設定または追加を推奨 • 開発者はインデクサまたは IHeaderDictionary.Append API を利⽤ • ヘッダーの設定、オーバーライド、またはヘッダーへの追加を⾏うことができる • IHeaderDictionary.Append 使⽤例︓ var context = new DefaultHttpContext(); context.Request.Headers.Append("Accept", "text/html"); // ワーニングは出ない ©2023 VMware, Inc. 7

8.
[beta]
API 開発のための新しいアナライザー 2

ルートハンドラに渡されたパラメータ型が正しいインターフェースを実装していない場合別のアナライザーが警告
• 以下の Customer 型は正しいシグネチャを持つ BindAsync メソッドを実装していないため警告発⽣︓

var app = WebApplication.Create();
app.MapGet("/customers/{customer}", (Customer customer) =>
{ /* ... */ });
// ASP0021 ワーニング
public class Customer
{
public async static Task<Customer> BindAsync(HttpContext
context)
=> new Customer();
}
• このワーニングにより開発者は以下を確認できる

• API が堅牢であること
• 適切な動作のために適切なインターフェースが実装されている
©2023 VMware, Inc.

8

9.

API 開発のための新しいアナライザー 3 RequestDelegate アナライザー • RequestDelegate が不正に実装されているかどうかを検出 • このアナライザーは RequestDelegate のレスポンスが実⾏時に破棄されないことを確認 • 代わりに c.Response.WriteAsync または最⼩限の API の使⽤を推奨 • c.Response.WriteAsync 使⽤例︓ var app = WebApplication.Create(); Task HelloWorld(HttpContext c) => c.Response.WriteAsync ("Hello World!"); // ワーニングは発⽣しない app.MapGet("/", HelloWorld); • 新しいアナライザーは以下を⽀援 • ASP.NET Core の開発体験に貴重な付加価値を付与 • 開発者がデバッグ、テスト、および保守を容易にする⾼品質のコードを作成 ©2023 VMware, Inc. 9

10.

Firefox での Blazor WebAssembly のデバッグ .NET 8 Preview 1 アップデートにより Firefox での Blazor WebAssembly アプリのデバッグが可能に • Blazor WebAssembly アプリのデバッグに は、ブラウザをリモートデバッグ⽤に設定 し、.NET WebAssembly デバッグプロキシ を通してブラウザ開発者ツールを使⽤してブラ ウザに接続する必要あり • 現時点では、Visual Studio からの Firefox のデバッグはサポートされてい ない • 開発中に Firefox で Blazor WebAssembly アプリをデバッグするには、 次の⼿順に従う • Blazor WebAssembly の開発体験に 貴重な追加要素であり、開発者がより簡単に アプリをデバッグできるようにするもの ©2023 VMware, Inc. 10

11.

.NET アセンブリのための実験的な WebCil フォーマット 環境によってはファイアウォールやアンチウイルスツールが .dll ファイルのダウンロードや使⽤をブロックするため Blazor WebAssembly アプリのような .NET アセンブリに基づく Web アプリの使⽤が妨げられる場合あり • この問題に対処するため、wasm-experimental ワークロードは、ブラウザベースの Web アプリ⽤の .NET アセンブリの パッケージに使⽤できる新しい.webcil ファイル形式をサポートするようになった • WebAssembly Browser App で新しい WebCil 形式を試すには、次の⼿順に従う︓ // wasm-experimental ワークロードをインストールする︓ dotnet workload install wasm experimental // 新しいアプリを作る︓ dotnet new wasmbrowser // .csproj ファイルに WasmEnableWebcil プロパティを追加 <PropertyGroup> <WasmEnableWebcil>true</WasmEnableWebcil></PropertyGroup> // アプリを実⾏ブラウザの DevTools でダウンロードされているのが.dll ではなく.webcil であることを確認 • WebCil 形式は現在、実験的な WebAssembly Browser Apps でのみ利⽤可能だが、Microsoft は将来の アップデートで Blazor WebAssembly Apps でも利⽤可能にする予定 ©2023 VMware, Inc. 11

12.

BlazorWebView を読み込むための初期 URL の指定 BlazorWebView の新しい StartPath プロパティは最初にナビゲートするパスを設定できる • BlazorWebView がロードされた後、ユーザーを特定のページに直⾏させたい場合に便利 <BlazorWebView StartPath="/counter" HostPage="index.html" /> ©2023 VMware, Inc. 12

13.
[beta]
SPA 開発サーバーを稼働させ続けるための新オプション
SpaDevelopmentServerOptions の新しい KeepRunning オプション
• ASP.NET Core でシングルページアプリ(SPA)を構築する場合、開発中は SPA の開発サーバーとバックエンドの
ASP.NET Core の両⽅を実⾏する必要あり
• SPA 開発サーバーは、API リクエストを ASP.NET Core バックエンドにプロキシするように構成されている
• KeepRunning オプションは、ASP.NET Core のプロセスが終了しても SPA開発サーバーを実⾏したままにできる
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "ClientApp/build";
});
builder.Services.AddControllers();
builder.Services.AddSpa(options =>
{
options.SourcePath = "ClientApp";
options.UseReactDevelopmentServer(npmScript: "start");
options.Options.SourcePath = "ClientApp";
options.Options.StartupTimeout = TimeSpan.FromSeconds(120);
options.Options.KeepRunning = true; // SPA 開発サーバーを実⾏したままにできる新オプションを有効にする
});
©2023 VMware, Inc.

13

14.
[beta]
Kestrel の名前付きパイプをサポート
名前付きパイプ = Windows アプリ間のプロセス間通信 (IPC) を構築するための⼀般的な技術
• .NET、Kestrel、名前付きパイプを使⽤して IPC サーバーを構築できる
• この機能詳細および.NET と gRPC を使⽤して IPC サーバーとクライアントを作成する⽅法については、
gRPCによるプロセス間通信を参照

var builder = WebApplication.CreateBuilder(args);
builder.WebHost.ConfigureKestrel(serverOptions =>
{
serverOptions.ListenNamedPipe("MyPipeName");
});

©2023 VMware, Inc.

14

15.

HTTP/3 のデフォルトでの有効化 1 接続設定の⾼速化、ヘッドオブラインブロッキングの廃⽌、ネットワーク間の移⾏性の向上など、いくつかの利点 • .NET 7 では ASP.NET Core と Kestrel で HTTP/3 のサポートが追加された • .NET 8 では HTTP/1.1、HTTP/2 と並んでデフォルトで有効化されている .NET 8 の HTTP/3 重要ポイント︓ • ASP.NET Core と Kestrel でデフォルト で有効化 • 接続のセットアップが⾼速化され、ヘッド オブラインブロッキングが発⽣しない • ネットワーク間の遷移がよりスムースに • HTTP/1.1 および HTTP/2 もサポート • クライアントがトランスポートに TCP の 代わりに QUIC を使⽤可能に ©2023 VMware, Inc. 15

16.
[beta]
HTTP/3 のデフォルトでの有効化 2
接続設定の⾼速化、ヘッドオブラインブロッキングの廃⽌、ネットワーク間の移⾏性の向上など
• .NET 8 プロジェクトで HTTP/3 を有効にするには、ASP.NET Core アプリで次のコードを使⽤︓

WebHost.CreateDefaultBuilder(args)
.UseKestrel(options =>
{
options.Listen(IPAddress.Any, 5001, listenOptions =>
{
listenOptions.Protocols = HttpProtocols.Http3;
});
})
.UseStartup<Startup>();
• 上記の例︓

• UseKestrel メソッドで Kestrel を Web サーバーとして設定
• Listen でリッスンする IP アドレスとポートを指定
• HttpProtocols.Http3 オプションを使⽤して HTTP/3 を有効に
©2023 VMware, Inc.

16

17.

.NET 8 Preview 4 における ASP.NET Core の⼤幅な改善 注⽬すべき機能強化 • • • • • Blazor のストリーミング レンダリングとフォーム処理 最⼩限の API でのフォーム バインディングのサポートの拡張 パフォーマンス向上のためのネイティブ AOT コンパイル Identity API エンドポイントによる認証と承認の強化 アプリケーション監視のためのメトリックの追加など ©2023 VMware, Inc. 17

18.

Blazor コンポーネントによる SSR の効率化 - 1 サーバーサイドの Blazor ページを⾼速にロードする • SSR (Server-Side Rendering) によりクライアントサイドへのコンテンツ更新のストリーミングが可能 • ⾮同期タスクが並⾏して実⾏されプレースホルダを使⽤することでこれまで以上に速く読み込まれる • ⾮同期タスクの実⾏中は Loading... と表⽰される • 実⾏が完了すると DOM 内のクライアントに情報が渡される ©2023 VMware, Inc. 18

19.
[beta]
Blazor コンポーネントによる SSR の効率化 - 2
サーバーサイドの
Blazor ページを⾼速にロードする
// Blazor Server プロジェクト(wwwroot/index.html
または wwwroot/_Host.cshtml

)に追加

//.NET 8 の新しい Blazor Server-Side Rendering (SSR) 機能を有効にするために必要
// ‘suppress-error’ 属性は、スクリプトの読み込みに関連する指定されたビルド警告 (BL9992) を無視するために使⽤される
<script src="_framework/blazor.web.js" suppress-error="BL9992"></script>
// その後にページルーティングを定義する
@page “/fetchdata”
// Blazor Server プロジェクトに必要な名前空間をインポートする
@using BlazorSSR.Data
@inject WeatherForecastService ForecastService // StreamRendering 属性を使⽤してこの Blazor コンポーネントのサーバーサイドレンダリングを有効にする
@attribute [StreamRendering(true)]
<PageTitle>Weather forecast</PageTitle>
<h1>Weather forecast</h1>
// データ取得中に “Loading... ”メッセージを表⽰するための条件付きレンダリングを使⽤する
@if (forecasts is null)
{
<p><em>Loading...</em></p>
}
else
{
// データが利⽤可能な場合に天気予報をレンダリングする
}
@code {
private string message;
// OnInitializedAsync メソッドをオーバーライドして天気予報データを⾮同期で取得する
protected override async Task OnInitializedAsync()
{
forecasts = await ForecastService.GetForecastAsync(DateOnly.FromDateTime(DateTime.Now));
}
}

©2023 VMware, Inc.

19

20.

Blazor SSR でフォーム投稿を使いこなす - 1 SSR でフォーム投稿を扱うのが簡単に • メインレイアウトにある CascadingModelBinder コンポーネントでモデルバインディングコンテキストを作成 // CascadingModelBinder コンポーネントをメインレイアウトに追加 (通常は MainLayout.razor) // Blazor SSR でフォーム投稿をシームレスに処理するために使⽤される (.NET 8) <CascadingModelBinder> @Body </CascadingModelBinder> ©2023 VMware, Inc. 20

21.
[beta]
Blazor SSR でフォーム投稿を使いこなす - 2
SSR でフォーム投稿を扱うのが簡単に

• Blazor で EditForm コンポーネントを使⽤してフォームを定義し、フォーム送信処理のために method 属性を設定
// EditForm コンポーネントを使⽤してフォームを定義し、フォーム送信を正しく処理するために method 属性を設定する必要がある
@inject FormDataProvider FormData
<EditForm method="POST" Model="exampleModel" OnValidSubmit="HandleSubmit">
// exampleModel オブジェクトの Name プロパティを⼊⼒フィールドにバインド
<InputText @bind-Value="exampleModel.Name" />
// フォーム送信のトリガーとなる送信ボタンを追加する
<button type="submit">Submit</button>
</EditForm>
@code {
// ExampleModelオブジェクトのインスタンス化
ExampleModel exampleModel = new();
protected override void OnInitialized()
{
// FormDataProvider サービスを利⽤して、フォームデータを⼿動でモデルバインディングする
if (FormData.Entries.TryGetValue("Name", out var nameValues))
{
exampleModel.Name = nameValues.First();
}
}
void HandleSubmit()
{
// 送信されたフォームデータを処理する
}
// 必要なプロパティ(例︓Name)を持つモデルクラスを作成する
public class ExampleModel
{
public string? Name { get; set; }
}
}
©2023 VMware, Inc.

※ モデルバインディングや検証機能は未導⼊

21

22.
[beta]
Minimal API で特定の型に対するフォームバインディングが可能に
FromForm 属性の助けを借りず IFormCollection、IFormFile、IFormFileCollection に適⽤
• Microsoft Example を参照︓
• XSRF 攻撃 からアプリを保護することを忘れない
• このコードサンプルでは ASP.NET Minimal API でアンチフォージェリーサービスを有効にする⽅法を紹介
// 最⼩限の API である WebApplication インスタンスを作成
var app = WebApplication.Create();
// アップロードされたファイルのファイルパスを⽣成または取得する機能
string GetOrCreateFilePath(string fileName, string filesDirectory = "uploadFiles")
{
var directoryPath = Path.Combine(app.Environment.ContentRootPath, filesDirectory);
Directory.CreateDirectory(directoryPath);
return Path.Combine(directoryPath, fileName);
}
// 指定された名前のファイルをアップロードする関数
async Task UploadFileWithName(IFormFile file, string fileSaveName)
{
var filePath = GetOrCreateFilePath(fileSaveName);
await using var fileStream = new FileStream(filePath, FileMode.Create);
await file.CopyToAsync(fileStream);
}// MapPost メソッドを使⽤して、FromForm 属性を必要としない IFormFile パラメータを受け付ける POST ルートを定義する
app.MapPost("/upload", async (IFormFile file) => {
var fileSaveName = Guid.NewGuid().ToString("N") + Path.GetExtension(file.FileName);
await UploadFileWithName(file, fileSaveName);
return TypedResults.Ok("File uploaded successfully!");
});
// WebApplication の起動と実⾏
©2023 VMware, Inc.
app.Run();

22

23.

.http ファイルによる API 開発の効率化 API 開発体験を最⼤限に活⽤する // 新しい Visual Studio HTTP エディターを使⽤しアプリのエンドポイントのテストを簡素化 // API ホストアドレスを定義して各リクエストでのハードコーディングを防ぐ @MyApi_HostAddress = http://localhost:5233 // 定義された API ホストアドレスを使⽤して全ての Todo を取得する GET リクエストをテスト GET {{MyApi_HostAddress}}/todos/ Accept: application/json // 3つのハッシュ(#)記号を使⽤して異なるリクエスト例を区切る // 特定の Todo アイテム(例︓id 1)を取得するために別の GET リクエストをテストする GET {{MyApi_HostAddress}}/todos/1 Accept: application/json // 必要に応じて異なる HTTP メソッドやエンドポイントによるリクエスト例を追加する ©2023 VMware, Inc. 23

24.

Native AOT – コンパイル時の最⼩限の API でロギングと例外処理を効率化 - 1 Request Delegate Generator でコンパイル時の Minimal API に⾃動ロギングや例外処理を導⼊できる ©2023 VMware, Inc. 24

25.
[beta]
Native AOT –
コンパイル時の最⼩限の API でロギングと例外処理を効率化 - 2
<EnableRequestDelegateGenerator>true</EnableRequestDelegateGenerator>
により活性化される API エンドポイント
// 最⼩限の API である WebApplication インスタンスを作成
var app = WebApplication.Create();
// Request Delegate Generator (RDG) を有効にすることで起動する API エンドポイントを定義
// RDG による⾃動ロギングと例外処理が提供され開発が簡素化
app.MapGet("/hello/{name}", (string name)
=> $"Hello {name}!");
// ⼊⼒された⽣年⽉⽇をもとに年齢を算出する別の API エンドポイントを定義
app.MapGet("/age", (DateTime birthDate)
=> $“あなたはもう {DateTime.Now.Year – birthDate.Year} 歳になります!");
// WebApplication の起動と実⾏
app.Run();
©2023 VMware, Inc.

25

26.

Native AOT – コンパイル時の最⼩限の API でロギングと例外処理を効率化 - 3 任意のリクエストを送信するものの BadHttpRequestException が発⽣する例 // hello エンドポイントに必須の 'name' パラメータを指定せずにリクエストを送信する // この cURL コマンドはパラメータが指定されていないため BadHttpRequestException が発⽣︓ curl "http://localhost:5056/hello" // 例外メッセージは以下の通り︓ /* Microsoft.AspNetCore.Http.BadHttpRequestException: Required parameter "string name" was not provided from route or query string..... at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddlewareImpl.Invoke(HttpContex t context) */ ©2023 VMware, Inc. 26

27.

Native AOT – コンパイル時の最⼩限の API でロギングと例外処理を効率化 - 4 /age エンドポイントに解析不能な birthDate パラメータがあると別の例外が発⽣する例 // age エンドポイントに解析不能な 'birthDate' パラメータを持つリクエストを送信 // 以下の cURL コマンドは、'invalidDate' 値のため BadHttpRequestException が発⽣︓ curl "http://localhost:5056/age?birthDate=invalidDate" // 例外メッセージは以下のようなものになる︓ /* Microsoft.AspNetCore.Http.BadHttpRequestException: Failed to bind parameter "DateTime birthDate" from "invalidDate".... at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddlewareImpl.Invoke(HttpContext context) */ ©2023 VMware, Inc. 27

28.

ASP.NET Core メトリックス 最新リリースでの System.Diagnostics.Metrics による新しい ASP.NET Core メトリクスが登場 • 新しい測定タイプ カウンター、ゲージ、ヒストグラムが登場 • 多次元バリューレポーティングの強化 強化された多次元値レポートによりアプリケーションのパフォーマンスをより深く理解 • クラウドネイティブエコシステムとの親和性 OpenTelemetry の追加によりクラウドネイティブなエコシステムと連携が可能 ©2023 VMware, Inc. 28

29.

認証と認可 MapIdentityApi<TUser>()、ユーザー登録とログイン (/register および /login) ⽤の 新しい API エンドポイントを追加する拡張メソッドが導⼊ • この機能強化の⽬的は JavaScript ベースのシングル ページ アプリ (SPA) および Blazor アプリでの認証 のための ASP.NET Core Identity の使⽤の簡素化 • MapIdentityApi によって提供される JSON API エンドポイントは Razor Pages に基づく既定 の UI を置き換える SPA アプリと⾮ブラウザー アプリにより適したソリューションを提供 • ID API エンドポイント⽤に計画されている機能には、ASP.NET Core GitHub リポジトリで概要が説明さ れている 2 要素認証と電⼦メール検証のサポートが含まれる • インターフェイスではカスタム認可ポリシーのサポートが⼤幅に強化 (IAuthorizationRequirementData) これにより • 関連する要件を属性定義に含めることでポリシーの実装が簡素化され、コードの複雑さが軽減され、 保守性が向上 • 開発ワークフローが合理化され、開発者はアプリケーション内での承認管理の柔軟性が向上 ©2023 VMware, Inc. 29

30.

まとめ • ルートツーリングの新機能 • ルート制約のパフォーマンス向上 • API 開発のための新しいアナライザー • Firefox での Blazor WebAssembly のデバッグ • .NET アセンブリのための実験的な WebCil フォーマット • BlazorWebView を読み込むための初期 URL の指定 • SPA 開発サーバーを稼働させ続けるための新オプション • HTTP/3 のデフォルトでの有効化 • Blazor コンポーネントによる SSR の効率化 • Blazor SSR でフォーム投稿を使いこなす • Blazor の名前付きエレメントルーティング • Minimal API がフォームバインディングに対応 • .http ファイルによる API 開発の効率化 • Native AOT - コンパイル時の最⼩限の API でロギングと例外処理を効率化 • ASP.NET Core メトリックス • 認証と認可 ©2023 VMware, Inc. 30

31.

リソース ©2023 VMware, Inc. 31

32.

リソース⼀覧 • ASP.NET Core updates in .NET 8 Preview 4 https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-preview-4/ • ASP.NET Core Roadmap for .NET 8 #44984 https://aka.ms/aspnet/roadmap • .NET 8 Breaking Changes https://learn.microsoft.com/ja-jp/dotnet/core/compatibility/8.0#aspnet-core • ASP.NET Core https://github.com/dotnet/aspnetcore • A simple but effective data grid for Blazor https://aspnet.github.io/quickgridsamples/ ©2023 VMware, Inc. 32

33.

VMware Japan Public Sector “Cloud Smart” Day 適切にクラウドを使い分けるマルチクラウド時代に求められる「クラウドスマート」に向けて July 13th, 2023, JAPAN オンライン開催 Agenda https://japan.zdnet.com/info/event/vmware/202307/ 開催概要 プログラム [ ⽇時 ] [基調講演] 2023年7⽉13⽇(⽊) 13:30-16:50 「クラウドファースト」戦略から オンライン開催 「クラウドスマート」戦略の時代へ。 「統制され、最適化されたマルチクラウド」への [申込サイト] 転換に必要なクラウドスマート指針の考え⽅について 事前登録制 弊社公共 SE 本部本部⻑ 中島より解説します。 https://japan.zdnet.com/info/event/vmware/202307/ [⾃治体向けセッション] [参加対象 ] ・⾃治体のクラウド利⽤状況と最新動向 官公庁団体における役員クラスの⽅、 ・クラウドスマートワークショップのご案内 情報システム関連部⾨のマネージャ、 ・クラウド活⽤の課題に対する解決策をご紹介 IT 担当者、システム開発者、パートナー企業 [ 主催 ] [官公庁向けセッション] ・中央省庁のクラウドスマート担当者や 主催 ︓ 朝⽇インタラクティブ 協賛 ︓ ヴイエムウェア株式会社 セキュリティ担当者のご登壇(調整中) ・官公庁システムのクラウド化への展望 ・防衛省向けセッションをご⽤意 ©2023 VMware, Inc. 33

34.

Thank You for your attention! ©2023 VMware, Inc.