.NET 4.5に注目が集まる中、Microsoftは継続的に.NET 4.0の強化を行っている。最新のリリース.NET 4.0.3には、ガベージコレクションの変更やWindows Workflowなどが含まれている。しかし、このバージョンはデフォルトでは有効にならない。これらの新しい機能を使いたい開発者は、プロジェクトのターゲットフレームワークの選択肢で“.NET Framework 4.0.3”か“.NET Framework 4.0.3 Client Profile”のどちらかを選択する必要がある。
ガベージコレクション
.NETの場合、開発者はガベージコレクタの遅延モードを変えることができる。完全なガベージコレクションサイクルが実行されている間の短い中断に耐えられる、高スループットなアプリケーションの場合、普通レイテンシモードはBatchモードに設定される。 例えば、GCによる中断よりもネットワークの遅延の方が遥かに目立つウェブサイトなどが良い例だ。他方、UIがあるアプリケーションの場合、Interactiveモードが使われる。このモードはBatchモードよりも遅いが、UIの反応速度を劣化させずにガベージコレクションが実行できる。
高スループットと低遅延を組み合わせる必要があるアプリケーションもある。.NET 2.0 SP 1の場合、このようなアプリケーションはわずかな時間でLowLatencyモードに切り替えることができた。このモードではGCによる処理の中断はほとんど発生しない。しかし、時々完全なGCサイクルを手動で実施しないとわずかな時間だけしか利用できない。OutOfMemoryExceptionが発生する可能性があるからだ。
新しく追加されたSustainedLowLatencyはLowLatencyとInteractiveの折衷モードだ。GCによる中断を極力排しつつ、絶対に必要な完全に処理をブロックしてしまうガベージコレクションも実行する。これによって、ある程度の長い時間このモードのままにしておいても安全になるが、開発者は低レイテンシのモードを利用しているときは不要なメモリ確保を避ける方がよい。
Windows Workflow Foundation
The core engine for Windows Workflow Foundationの中核部分のエンジンが部分的に信頼された環境でも実行できるようになる。多くの特徴はSqlWorkflowInstanceStoreとVisual Basicの例外以外はほとんどの機能がサポートされている。このふたつは依然、完全に信頼された環境でしか利用できない。
ポータブルクラスライブラリ
ポータブルクラスライブラリがSystem.Xml.LinqとSystem.ComponentModel.DataAnnotationsを含むようになる。
SQL Server - 相関コネクションID
Microsoft SQL Server 2012には、クライアントとサーバ間のコネクションIDを関連付ける機能がある。今回のアップデートでSqlClientはコネクションIDの情報を送信し、サーバにログオンできるようになる。加えて、下記の機能がSqlClientに追加される。これによってクライアント側でコネクションIDを取得できる。
- SqlConnectionのConnectionIdプロパティ
- SqlExceptionのConnectionIdプロパティ
- SqlException.ToStringにはコネクションIDが含まれる