原文リンク(2023-06-16)
System.ServiceModel 6.0のリリースでは、WCF/CoreWCFの関数を呼び出すためのクライアントサポートが提供される。これらのNuGetパッケージはWCFクライアントとして総称され、.NETプラットフォーム・アプリケーションがWCFまたはCoreWCFサービスとシームレスに対話できる。.NET Core 3.1プラットフォームとそれ以降のバージョンには、組み込みのWCFサーバーサポートが含まれていないが、ASP.NET Coreに基づく別のコミュニティプロジェクトであるCoreWCFは、WCF準拠のサーバー実装を提供することでこのギャップを埋めている。
6.0リリースには、以下のパッケージが含まれている。
Source: https://devblogs.microsoft.com/dotnet/wcf-client-60-has-been-released/
最新バージョンでは、WCFとCoreWCFの両方の実装と互換性のある、名前付きパイプのサポートが導入されている。NetNamedPipeBindingは
、同じWindowsマシン上のプロセス間のバイナリ通信を容易にする。しかし、名前付きパイプラインはWindowsでのみ利用可能であり、Linuxやその他の非Windowsプラットフォームでは利用できない。このギャップを埋めるため、CoreWCFはLinuxでも同等の機能を提供できるよう、Unixドメインソケットのサポートを開発している。WCFクライアントはCoreWCFのリリースに合わせてアップデートされ、シームレスな連携を実現する予定である。
6.0リリースから、WCFクライアントパッケージは.NET Standard 2.0をサポートしなくなり、.NET 6.0以降専用となった。この変更により、.NET Frameworkにはない、.NET 6で利用できる新しい機能を利用できるようになった。.NET 6プラットフォームに集中することで、パッケージのサイズと複雑さが軽減され、展開プロセスが簡素化される。.NET標準のサポートは維持され、アプリケーションやライブラリは、バージョン4.xのSystem.ServiceModel.*
パッケージを引き続き使用したり、.NET 6以降用のこれらのNuGetパッケージを使って.NET Framework用の条件セットへの参照を使用できる。
さらに、System.ServiceModel.Duplex
およびSystem.ServiceModel.Security
パッケージは、それらのタイプがSystem.ServiceModel.Primitives
パッケージにマージされたため不要となった。この変更により、タイプフォワーダーは常にアプリケーションで使用されるPrimitivesパッケージのバージョンを参照するため、これらの言及されたパッケージは不要になる。
このリリースは、コミュニティでさまざまな反応を引き起こした。Antonello Provenzano氏は、Facebook で以下のコメントを寄せている。
WCF?今は2023年だ。 REST、GraphQL、gRPC、AMQP... .NET CoreにアップデートしなければならないWCFを使ったレガシーシステムはどれだろうか? もしWCFサービスインターフェースの更新が目的なら、そのインターフェースの背後には更新しなければならない多くのものがあり、システム(おそらくモノリス)のソフトウェアにビッグバンを引き起こす。 その代わりに、全く新しい実装をするのであれば、なぜAPIを公開するのにWCFを選んだのだろうか?
別のユーザー、 Jozef Raschmann氏は次のように答えている。
落ち着いて。政府のサービスはすべてWCFとそのセキュリティ拡張WS-*に基づいている。それでも、RESTの世界には標準化された代替手段はない。