.NET Framework 4.6.1 RC を発表

 

本記事は、マイクロソフト本社の .NET Blog の記事を抄訳したものです。 【元記事】 Announcing .NET Framework 4.6.1 RC 2015/10/29 11:00 PM

マイクロソフトはこのたび .NET Framework 4.6.1 RC をリリースしました。今回のリリースではおよそ 150 件の修正が行われ、新機能もいくつか導入されています。下記のリンクから RC 版での修正点や新機能をご確認いただき、実際にお試しください。ここでは、今回行われた更新や重要な機能強化の概要をご紹介します。

  • WPF の機能強化: スペル チェックの強化、ユーザーごとのカスタム辞書のサポート、タッチのパフォーマンス向上
  • 楕円曲線デジタル署名アルゴリズム (ECDSA) を使用した X509 証明書のサポートの強化
  • AlwaysOnAlways Encrypted (英語) に関する SQL 接続のサポートの追加
  • ICorProfilerInfo インターフェイスと新しい NGen PDB に関連するプロファイリングの機能強化
  • System.Transactions API での、MSDTC 以外のコーディネーターを使用した分散トランザクションのサポートの追加
  • その他、RyuJIT、GC、WPF、WCF のパフォーマンス、安定性、信頼性に関連する多くの修正

下記のリンクから、今回のリリースを今すぐダウンロードしてお試しいただけます。

 

.NET Framework 4.6.1 RC

 
今回のリリースの詳細については、「.NET Framework 4.6.1 RC リリースでの変更一覧 (英語)」、「.NET Framework 4.6.1 RC におけるアプリケーションの互換性 (英語)」、.NET Framework 4.6.1 リリースと 4.6 リリースを比較した「.NET Framework API の差分 (GitHub) (英語)」でご確認いただけます。.NET Framework 4.6.1 は、Windows 10、Windows 8.1、Windows 8、Windows 7 のほか、それらに相当するサーバー プラットフォームにインストールできます。.NET Framework 4.6.1 RC のインストールには、オフライン インストーラーを使用できます。

Visual Studio 2012 以降では、.NET Framework 4.6.1 RC Multi-Targeting Pack をインストールすることで、.NET Framework 4.6.1 をターゲットに設定することができます。

 

Windows Presentation Foundation

WPF チームは今回のリリースで、数多くの重要な機能強化を実施しました。こうした機能強化の詳細やその他の内容については、WPF チームによるこちら (英語) のブログ記事でご確認いただけます。

パフォーマンスの向上

複数のタッチ イベントの結合がサポートされたことで、タッチ スタックのパフォーマンスが向上し、マウス ポインターの動きと同様に、現在の位置が UI スレッドの待ち時間の後に報告されるようになりました。さらに、RichTextBox ですばやく入力しているときにレンダリング スレッドで非常に多くのサイクルが消費されることがなくなり、この場合の入力がはるかにスムーズになります。

サンプル

MSDN には多数の WPF サンプルが用意されています。マイクロソフトでは、(利用状況を踏まえて) 200 を超える人気のあるサンプルをオープン ソースの GitHub リポジトリ (英語) に移行しているところです。サンプルをより良いものにするためにご協力をお願いいたします。プルリクエストを送信していただくか、GitHub のイシュー (英語) としてご意見をお寄せください。

DirectX 拡張機能

DX10/Dx11 コンテンツとの相互運用が容易になる、D3DImage の新しい実装を提供する NuGet パッケージ (英語) をリリースしました。DX12 のサポートは今後のリリースで追加される予定です。このパッケージのコードはオープンソース化されており、こちら (英語) から入手できます。

スペル チェックの機能強化

OS のサポートを利用して追加の言語のスペル チェックを行えるように、Windows 8.1 以上で WPF のスペルチェック機能が更新されました。Vista SP2、Windows 7、Windows 8 については、機能の変更はありません。

ユーザーごとのカスタム辞書のサポートの追加

.NET Framework 4.6.1 の WPF では、グローバルに登録されるカスタム辞書のサポートが追加されました。この機能は、コントロールごとの登録機能と共に利用できます。さらに、Windows 10 と Windows 8.1 のカスタム辞書では、除外された単語とオートコレクト リストの機能も追加されました。

 

暗号関連の更新

ECDSA を使用した X509 証明書のサポート

.NET Framework 4.6 では、System.Security.Cryptography API (機械翻訳) に対して重要な機能強化をいくつか行い、X509 証明書での RSACng のサポートを追加しました。.NET Framework 4.6.1 では暗号ライブラリを拡張し、楕円曲線デジタル署名アルゴリズム (ECDSA) を使用した X509 証明書のサポートを強化しました。ECDSA キーはセキュリティ レベルが同等の RSA キーよりもサイズが小さくなるため、トランスポート層セキュリティ (TLS) などの利用におけるパフォーマンスが向上します。.NET Framework の実装は、実際には既存の Windows の機能を呼び出します。

新しいアプローチの実装方法の例を以下に示します。

 

SQL 接続

Always Encrypted: ハードウェアで保護されたキーのサポート

ADO.NET で、Always Encrypted の列マスター キーをハードウェアセキュリティ モジュール (HSM) にネイティブに格納する機能がサポートされるようになりました。このサポートにより、HSM に格納された非対称キーを利用できるため、独自の列マスターキー ストア プロバイダーを記述して、それをアプリケーションに登録する必要はなくなります。HSM に格納されている列マスター キーで保護された Always Encrypted データにアクセスするには、HSM ベンダーが提供する CSP プロバイダーか CNG キー ストア プロバイダーを、アプリケーション サーバーかクライアントコンピューターにインストールしていただく必要があります。

AlwaysOn に関する MultisubnetFailover 接続動作の改良

SqlClient (機械翻訳) では、SQL Server 2012 で導入された AlwaysOn 可用性グループへの高速な接続を自動的に提供するようになりました。SqlClient は、アプリケーションが別のサブネットの AlwaysOn 可用性グループに接続しようとしているかどうかを透過的に検出し、その時点でアクティブなサーバーをすばやく特定して、そのサーバーに対する接続を確立します。以前のリリースでは、アプリケーションで "MultisubnetFailover=true" を含む接続文字列を設定し、AlwaysOn 可用性グループに接続しようとしていることを示す必要があります。この接続キーワードを使用しない場合、アプリケーションでは AlwaysOn 可用性グループに接続する際にタイムアウトが発生する可能性があります。今回のリリースでは、アプリケーションで MultisubnetFailover を true に設定する必要はなくなりました。SqlClient における AlwaysOn 可用性グループのサポートの詳細については、「高可用性障害復旧のための SqlClient サポート」を参照してください。

System.Transactions

Transaction.EnlistPromotableSinglePhase (機械翻訳) メソッドを使用している場合、MSDTC 以外の別の分散トランザクション マネージャーを利用してトランザクションをプロモートできるようになりました。そのためには、Transaction.EnlistPromotableSinglePhase メソッドの新しいオーバーロードに GUID としてトランザクション プロモーターの ID を指定します。この操作に成功した場合、Transaction の機能に制限が課されます。

MSDTC 以外のトランザクション プロモーターが登録されると、以下のメソッドでは System.Transactions によって MSDTC へのプロモーションが求められるため、TransactionPromotionException がスローされるようになります。

  • Transaction.EnlistDurable
  • TransactionInterop.GetDtcTransaction
  • TransactionInterop.GetExportCookie
  • TransactionInterop.GetTransmitterPropagationToken
  • Transaction オブジェクトのシリアル化を行うメソッド

MSDTC 以外のトランザクション プロモーターが登録された後、その後の永続的な登録は、そのトランザクション プロモーターによって、プロモーターが定義するプロトコルを使用して行われる必要があります。トランザクションプロモーターの Guid を取得するには、Transaction.PromoterId プロパティを使用します。トランザクションがプロモートされると、トランザクションプロモーターはプロモーション トークンと呼ばれる byte[] を提供します。MSDTC 以外によってプロモートされたトランザクションのプロモーション トークンをアプリケーションで取得するには、Transaction.GetPromotedToken メソッドを使用します。

Transaction.EnlistPromotableSinglePhase メソッドの新しいオーバーロードを使用する場合、プロモーション処理が問題なく完了するように、特定の呼び出しシーケンスに従う必要があります。この規則は、MSDN の新しいメソッドの説明に記載されています。

サンプル コードはこちら (英語) でご覧いただけます。

 

プロファイリング

ICorProfilerInfo インターフェイスにおける PDB へのアクセスのサポートを強化

ASP.NET 5 では、アセンブリが Roslyn によってメモリ内でコンパイルされることが一般的です。プロファイリングツールを作成する開発者の皆様にとっては、これまでディスク上でシリアル化されていた PDB が存在しなくなる可能性があるということです。プロファイリング ツールでは多くの場合、PDB を使用して、コード カバレッジや 1 行ごとのパフォーマンス分析といったタスクのために、コードとソース行を関連付けていました。こうしたプロファイリング ツールからメモリ内の PDB データにアクセスできるようにするために、一連の ICorProfiler API に新しい機能を追加しました。新しい API を使用すると、プロファイラーでメモリ内の PDB の内容をバイト配列として取得してから、それを処理したりディスク上にシリアル化したりすることができます。

ICorProfiler によるインストルメンテーションの改良

ICorProfiler API の ReJIT 機能によって動的なインストルメンテーションを行っているプロファイラー向けに、機能強化が行われています。従来、このようなツールは IL をいつでもインストルメント化できましたが、メタデータを変更できるのはモジュールの読み込み時だけでした。IL はメタデータを参照しているため、可能なインストルメンテーションの種類は限られていました。

そこで、モジュールを読み込んだ後の一部のメタデータ編集、特に新しい AssemblyRef、TypeRef、TypeSpec、MemberRef、MemberSpec、UserString の各レコードの追加をサポートすることで、こうした制限の一部を解消しました。これらの変更により、はるかに広範なインストルメンテーションをすばやく行うことが可能になります。

 


ネイティブ イメージ ジェネレーター (NGen) PDB

マシン間のイベント トレースでは、マシン A 上でプログラムのプロファイリングを行い、ソース行と対応付けられたプロファイリングデータをマシン B 上で調査できます。NGen PDB のサポートにより、IL PDB に依存せずに IL とネイティブ コードのマッピングを含む PDB を NGen で作成できるようになりました。マシン間のイベント トレースのシナリオでは、マシン A によって生成されたネイティブ イメージの PDB をマシン B にコピーし、DIA API を使用して、IL PDB のソースと IL のマッピングと、ネイティブ イメージ PDB の IL とネイティブ コードのマッピングを読み取る必要がありました。両方のマッピングを組み合わせることで、ソースとネイティブコードのマッピングが実現します。ネイティブ イメージの PDB のサイズはどのモジュールやネイティブ イメージよりもかなり小さいため、マシン A からマシン B へのコピー時間ははるかに短くなります。

以前のバージョンの .NET Framework を使用する場合、ソースとネイティブ コードのマッピングを作成するには、プロファイリング対象のマシンから IL PDB が格納された分析用マシンへと、モジュールやネイティブ イメージをすべてコピーする必要があります。この方法は、ファイル サイズが比較的小さいスマートフォン用アプリケーションでは問題なく動作すると考えられますが、デスクトップシステムではファイル サイズが非常に大きくなる場合があり、コピーにかなりの時間がかかります。

clip_image001

 

 


まとめ

マイクロソフトでは、.NET Framework 4.6.1 に関するいくつかの部分にさらに投資を続けると同時に、フレームワークの信頼性、安定性、パフォーマンスを大幅に向上させるための修正も継続して行っています。ぜひ新しいリリースをお試しいただき、ご意見やご感想をお聞かせください。

.NET Framework 4.6.1 に対する取り組みの大きな原動力となっているのは、.NET Framework 4.6 に対して皆様からお寄せいただいたフィードバックです。マイクロソフトでは皆様のフィードバックを積極的に製品に取り入れていますので、今後もご協力いただけますと幸いです。