[翻訳]ASP.NET CoreはNET 5プレビュー7での更新

6015 ワード

原文:ASP.NET Core Updates in .NET 5 Preview 7作者:Sourabh時間:2020年7月21日
.NET 5プレビュー7を使用して評価できるようになりました.このリリースの新機能です.
  • Blazor WebAssemblyアプリケーションが使用できるようになりました.NET 5開発
  • Blazor WebAssemblyのデバッグ要件
  • を更新
  • Blazorのアクセス性向上
  • Blazorのパフォーマンス向上
  • 証明書認証性能向上
  • HTTP/2 PINGフレーム
  • を送信する.
  • は、Kestrelソケット伝送における他のターミナルタイプ
  • をサポートする.
  • Kestrelのカスタムヘッダ復号
  • その他の小さな改良
  • はじめに


    はい.NET 5プレビュー7でASPの使用を開始する.NET Core、インストールしてください.NET 5 SDK.
    Visual Studio 2019 16.7プレビュー5以降を使用する必要があります.NET 5プレビュー7.Visual Studio for Macの最新プレビュー版もサポートされています.NET 5. 要将NET 5はVisual Studioコードとともに使用しますので、最新バージョンのC#拡張子をインストールしてください.

    既存のプロジェクトのアップグレード


    既存のASPをNET Coreアプリケーションから.NET 5 Preview 6にアップグレードNET 5 Preview 7、次の操作を行います.
  • はすべてのMicrosoftを使用します.AspNetCore.* パッケージ参照は5.0.0-preview.7.*に更新されました.
  • はすべてのMicrosoftを使用します.Extensions.* パッケージ参照は5.0.0-preview.7.*に更新されました.
  • System.Net.Http.Jsonパケット参照は5.0.0-preview.7.*に更新された.

  • 参照.NET 5のASP.NET Coreの重大な変更の完全なリスト.

    既存のBlazor WebAssemblyプロジェクトのアップグレード


    既存のBlazor WebAssemblyプロジェクトをアップグレードするには、次のプロパティを更新します.
    から
    netstandard2.13.0

    に着く
    net5.0browser-wasmtrue

    さらに、Microsoft.AspNetCore.Components.WebAssembly.Buildに対するすべてのパッケージ参照を削除します.これは不要です.

    新しいのは何ですか。Blazor WebAssemblyアプリケーションは現在.NET 5


    Blazor WebAssembly 3.2アプリケーションはアクセスできません.NET Standard 2.1 APIセット.このバージョンでは、Blazor WebAssemblyプロジェクトが.NET 5(net5.0)がターゲットであり、より広範なAPIセットにアクセスすることができる.はい.NET 5でAPIを実装するBlazor WebAssemblyのサポートが進行中であるため、実行時にPlatformNotSupportedExceptionが発生するAPIもあります.特定のAPIのサポートが不足しているため、お客様のフィードバックを喜んで受け取ります.

    Blazor WebAssemblyのデバッグ要件が更新されました


    Visual StudioコードでBlazor WebAssemblyアプリケーションのデバッグを有効にするには、JavaScriptデバッガ(Nightly)拡張子をインストールする必要がありました.JavaScriptデバッガの拡張はVSコードの一部として提供されているため、この機能は不要です.JavaScriptデバッガ拡張プログラムを以前にインストール(夜間)した場合は、アンインストールできます.Visual Studioコード設定でJavaScriptデバッガのプレビュー版を有効にする必要があります.

    Blazorのアクセス性の向上


    これで、認証に失敗すると、InputBaseから派生した内蔵Blazor入力コンポーネントが自動的にaria-invalidを無効にします.

    Blazorのパフォーマンス向上


    .NET 5のBlazor WebAssemblyの主な投資分野の1つは、ランタイムパフォーマンスの向上です.これは多方面の努力です.以下に、最適化が必要な高度な分野を示します.
  • .NET運転時実行
  • JSONシーケンス化
  • JavaScript相互運用
  • Blazorコンポーネントレンダリング
  • 絶えず改善するNET 5のBlazor WebAssemblyランタイムパフォーマンス.このバージョンには、今後のパフォーマンスの改善が含まれています.NET 5は、このパフォーマンスの結果に関する詳細情報を更新します.

    証明書認証のパフォーマンスの向上


    私たちはASP.NET Coreでは証明書認証にキャッシュが追加されています.証明書検証をキャッシュすると、証明書検証のパフォーマンスが大幅に向上します.ベンチマークテストでは、キャッシュを有効にすると、1秒あたりのリクエスト速度が400%向上したことが明らかになりました.
    アプリケーションを変更することなく、パフォーマンスの向上を実現します.デフォルトでは、キャッシュはオンです.必要に応じて、キャッシュを調整または無効にするオプションがあります.
    ドキュメントにASPについて見つけます.NET Coreの証明書認証の詳細.

    HTTP/2 PINGフレームの送信


    HTTP/2は、アイドル接続がまだ有効であることを確認するためにPINGフレームを送信する機構を有する.この機能は、長期にわたってアイドル状態にあるが、アクティブな長寿命ストリーム(例えば、gRPCストリーム)のみを間欠的に表示する場合に特に有用である.KestrelServerOptionsで制限を設定することで、定期PINGフレームをKestrelで送信する機能を追加しました.
    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.ConfigureKestrel(options =>
                {
                    options.Limits.Http2.KeepAlivePingInterval = TimeSpan.FromSeconds(10);
                    options.Limits.Http2.KeepAlivePingTimeout = TimeSpan.FromSeconds(1);
                });
                webBuilder.UseStartup();
            });
    

    Kestrelソケット転送の他のターミナルタイプをサポート

    System.Net.Socketsに導入された新しいAPIに基づいて、Kestrelのソケット転送(デフォルト)は、既存のファイルハンドルとUnixドメインソケットにバインドできます.既存のファイルハンドルへのバインドをサポートし、libuv転送を使用せずに既存のSystemd統合を使用できます.

    Kestrelでのカスタムヘッダ復号


    デフォルトではUTF-8ではなくタイトル名に基づいて、どのSystem.Text.Encodingを使用して入力されたタイトルを解釈するかを指定する機能を追加しました.KestrelServerOptionsRequestHeaderEncodingSelectorプロパティを設定して、使用するエンコーディングを指定できます.
    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.ConfigureKestrel(options =>
                {
                    options.RequestHeaderEncodingSelector = encoding =>
                    {
                        switch (encoding)
                        {
                            case "Host":
                                return System.Text.Encoding.Latin1;
                            default:
                                return System.Text.Encoding.UTF8;
                        }
                    };
                });
                webBuilder.UseStartup();
            });
    

    その他の改善点

  • は、CompareAttributeをRazor Pageモデルの属性に適用できるようになった.
  • のデフォルトでは、マスターからバインドされたパラメータと属性が必要とされています.
  • 空の注釈をASPに適用し始めました.NET Coreプログラムセット.私たちはいるつもりです.NET 5の公開の間、フレームワークの一般的な共通API表面の多くについてコメントする.
  • では、エンドポイントルーティングを使用するときの許可は、エンドポイントインスタンスではなくHttpContextを受信する.これにより、EndpointクラスからアクセスできないRouteDataおよびHttpContextの他の属性へのミドルウェアアクセスが許可されます.context.GetEndpoint()を使用して、コンテキストからエンドポイントを取得できます.
  • System.Diagnostics.Activityのデフォルトフォーマットは、W 3 Cフォーマットにデフォルト設定されます.デフォルトではASP.NET Coreの分散トレースサポートは、より多くのフレームワークと相互運用できます.
  • FromBodyAttributeは、これらのパラメータまたは属性をオプションと見なすことができるオプションの構成をサポートします.
  • public IActionResult Post([FromBody(EmptyBodyBehavior = EmptyBodyBehavior.Allow)] MyModel model) { ... }
    

    フィードバックを与える


    私たちはあなたが好きであることを望んでいます.NET 5のこのバージョンのASP.NET Core! 私たちはあなたの最新について聞きたいです.NET 5バージョンの経験.GitHubに質問を提出することで、ご意見をお伺いします.
    ASPをお試しいただき、ありがとうございます.NET Core!