昨日のVisual Studio 2022ローンチに続いて今日は .NET Conf 2021 の1日目です。
- .NET Conf 2021 (dotnetconf.net)
- Free swag … デジタルお土産です。
最初はScott Hunter氏から。 .NETはユニファイドデベロッパープラットフォーム。 .NET 6でよりシンプルにまとまりました。
.NET 6のコミュニティコントリビューターは6900人増えて21000件の貢献が。Thank you!みたいな。
そんな .NET 6 は昨日GAしました。C# 10、F# 6、Arm64対応、Long-term-support(LTS)なバージョンです。初の64ビットなVisual Studio 2022もでました。アップグレードアシスタントもでました。 ⇒ https://aka.ms/dotnet-upgrade-assistant
シンプルな開発。どこでもホットリロード。 .NET Framework 4.6以降ならサポートぽい。C# 10はグローバルUsingとかいろいろ。シンプルな記述ができるようになったり。Webアプリも最低4行で。
デモはそのあたりを実演。 .NET 6 のコンソールアプリを作ってみる。.NET 6ではシングルラインコードで。
次のデモは .NET 6 の空のASP.NET Core Webアプリ。Web API作るときのウィザードでDockerサポートなども。(これはVisual Studioの話だけど)
OpenAPIサポートも。Global Usingしとけば各CSファイルでUsingしなくてもとかImplicit Usingとか。namespaceの{}を減らせるファイルスコープnamespaceとかとか。
次はクラウド関連。これらのサービスが .NET で稼働中(ロゴェ…)。Reverse ProxyなYARP 1.0もでました。Microsoftのプロダクションなサービスでも使われてます。AzureだとAzure App Service, Azure Static Web Apps, Azure Functionsが .NET 6対応済み。コンテナー関連だとAzure Container AppsもIgniteで発表されました。Visual Studio 2022なら直接デプロイもできます。
デモはScott 2からw David氏はGitHubの草(Profile)Tシャツ。QueueクライアントをDIしてFeedにリクエストが来たときにインスタンス(Singleton)渡されるようにしてQueueingするという感じのコードをささっと。ワーカーのほうもファイルスコープなnamespaceでインデントがシンプル。出来上がった各アプリはDockerコンテナーにしてAzure Container Appsへ。
次はBlazorですね。Blazor ServerとBlazor WebAssemblyをサポート。 .NET 6以前ではカバーできてなかったところもOKに。Blazor Fluent UI Componentsもリリースです。最新のWindows 11 Fluentビジュアルな感じ? クロスプラットフォームなネイティブUIな .NET Multi-platform App UI (MAUI)のGAは来年あたり。Blazor と .NET MAUIを組み合わせてハイブリッドなアプリとかも。GE Digitalなどでもう使われて事例化してるところもあります。
.NET MAUI Preview 10は今日リリース。 Visual Studio 17.1 (Preview 1)で使うのかな。
デモはDaniel氏。BlazorなPodcastのWebアプリです。Hot Reloadももちろん対応。ファイルの保存でHot Reloadすることもできます。Hot Reloadできない変更の場合は実行してるまま(いったんデバッグ停止・再デバッグしなくても)リビルドして反映させることもできます。
新しいビルドツールでWebAssemblyのファイルサイズも小さく抑えられます?(1MB⇒353KB?)
次はMAUIのデモ。アプリケーションのメタデータ的な情報(アイコンやフォントなどなど)をプロジェクトファイル内に設定。Windows上でXAMLのLive Previewとかも。Visual Treeも辿れます。
ターゲットプラットフォームを変えてWindows Subsystems for AndroidでAndroidアプリをデバッグ実行、Live Previewとかの機能も同様に行えます。
macOS上のVisual Studio for Macを使って同じコードをiOSシミュレーター上でデバッグ実行もOK。macOS上で動作するアプリもOK。全部同じコードで、C#で、同じプロジェクトで。
最後はMAUI上でBlazorを呼び出し。