サポート終了?Windows Communication Framework (WCF) の今後について徹底解説

「WCF….フレームワーク……NET 5+…?うっ頭が……」とお悩みの方。わかります。複雑ですもんね。また、「WCF はこのまま使い続けても大丈夫なのか?」と疑問に思う方も多いと思います。加えて、「WCF は.NET 5+ で廃止される」とも噂されていますよね。でもこれって実際の所どうなんでしょうか?この記事では、WCF の今後と取り得る対策について解説します。

WCF ってこれからどうなるの?

まず結論から言うと、まだまだサポートは続けられます。Web フォームなどの他の .NET Framework 同様です。しかし!!!何も考えずにそのまま WCF を使っていると大変なことになるので注意しましょう。

移行に関して、WCF は、Web フォーム アプリケーションの書き換えが複雑であることと比べると、かなりシンプルに行えます。なぜなら、WCF は通常、Web フォームのようにコードベース全体でルートを実行するのではなく、アプリケーション内に WCF 専用で実行できる場所を作り、そこで実行するからです。くわえて WCF には、.NET5 以降でも Microsoft がサポートしている代替品もいくつかあります。

そして、上記で説明した通り、WCF はすぐになくなりません。なので、まず考えるべきなのは、WCF をすぐに移行することではなく、その移行の計画を作成することです。さて、計画を作成するにはまず現状を知ることが不可欠です。なので、WCF について少しおさらいしておきましょう。

WCF の現在の状況は?

ざっくり言えば、以前と何ら変わっていません。

WCF の現在の状況というのは、.NET Core、Webフォーム、Windows WorkflowFoundation の .NET5+ ブランチに導入されていない代表的な 3 つの .NET Framework と同じです。つまり、.NET Framework は OS のライフサイクルと紐付いているため、すぐにサポートが切れるわけではありません。それどころか、.NET Framework は .NET 5 よりはるかに長くサポートされます。

つまり、Microsoft はこれらのフレームワークを引き続きこれからもしばらくはサポートするということです。とはいっても、あまり積極的には開発が続けられるわけではないので、使っている .NET Framework やその使用方法によっては注意が必要です。

WCF でとるべき 3 つの対策

さて、上記をふまえた上で、WCF をどうすべきかについては、以下の 3 つの選択肢があります。

  1. サポートが切れるまで WCF を使い続ける
  2. CoreWCF のリリースを待つ
  3. gRPC へターゲットするように切り替える

まず、これらの選択肢をわかりやすくするため、各フレームワークの状況と各選択肢を下記の表に簡単にまとめました。
そして、表の後に各選択肢について詳しく解説します。

 選択肢1: サポートが切れるまで WCF を使い続ける選択肢2: CoreWCF のリリースを待つ選択肢3: gRPC に切り替える
.NET Core で動作するか✘ No Yes Yes
クロスプラットフォームのサポート✘ No Yes Yes
リリース可能か Yes✘ 開発チームから「まだリリース可能な段階ではない」とのアナウンスあり Yes
Microsoft が支援している方法か 支援している。まだ .NET Framework の一部でもある 支援している。 また、WCF のコードがベースとなっている 支援している。現在 Microsoft が推奨している方法
Google が支援している方法か✘ No✘ No 支援している。Google によって開発
Active Development✘ NoYes Yes

選択肢1: サポートが切れるまで WCF を使い続ける

行うこと: 何もせずそのままです。今のところアプリケーションが問題なく動作している場合、.NET 5 の一部ではない WCF に特に変化はありません。

どういった時にこの選択肢を選ぶべき?: もし WCF を使用しているアプリケーションが行っているタスクが、自分のプロジェクトにおいて特に重要な部分ではなく、今のところ移行を行う時間がない場合に有効です。Windows OS が .NET Framework をサポートしている限り、WCF も同様に機能するためです。

考慮すべきこと: WCF をこれからも長期間使用する場合は、従来のアプリケーションと同様の調整を行う必要があります。

  • ちゃんとドキュメントを残しましょう。WCF はこれからも長くサポートされる予定ですが、WCF が古くなればなればなるほど、それについて詳しい開発者を探すのが難しくなります。しかし、ちゃんとドキュメントを残すことで、将来詳しくない開発者が WCF に取り組む際でも、容易にコードが理解できるようになります。
  • 適切な人に適切な報酬を支払いましょう。時には WCF のエキスパートが必要となる場面もあると思います。しかし、これから WCF を扱える開発者はどんどん少なくなっていくことから、彼らを雇うコストもどんどん高くなってきます。この際に特にあり得るのは、.NET Framework のサポートが切れたときに移行するというやり方ですが、直前になって慌てて WCF から他のフレームワークに移行する場合、無駄に高いコストを支払う羽目になります。そのため、今から余裕をもって計画しておくことでそれが防げます。
  • WCF は既にレガシーな技術である」ということを頭に入れておきましょう。Microsoft は WCF の開発をすでに止めてます。また、.NET Core では可能でも WCF だとできないこともあります。加えて、WCF を使用しない方が良いケースもあります。

そして、すべてのアプリケーションを必ずしも移行する必要はありません。WCF から移行するのに必要な時間やお金を他のものに使った方が良いケースもあることを覚えておきましょう。

選択肢2: CoreWCF のリリースを待つ

CoreWCF とは?: CoreWCF は、WCF の機能を再現するフレームワークを .NET Foundation が中心となって開発しているオープンソースプロジェクトです。これを利用すると、現在 WCF を使用しているアプリケーションをそのまま使用できます。しかし、まだまだ改善の余地があることと、WCF の全ての機能が使えるわけではないことに注意が必要です。したがって、CoreWCF に関しては、開発状況をウォッチしつつ導入の時期を探るのも良いでしょう。

注意すべきこと: 上記の通り、CoreWCF の開発チームは「CoreWCF はまだプロダクト開発できる段階ではない」とアナウンスしています (とはいっても、時間が解決するかもしれませんが)。また、.NET Core へ移行する場合は、クロスプラットフォームのサポート、パフォーマンスの改善といったメリットを享受できる一方で、CoreWCF へ移行する場合は、そういったものがないことに注意が必要です。

考慮すべきこと: 次の 3 つのことを留意してください。

  • CoreWCF の開発を待っても遅くはありません。CoreWCF がもっと改善されて、リリース可能になるまで待ったとしても問題ありません。上記の選択肢 1 で説明した通り、WCF のサポートはすぐに切れることはありません。もし .NET Core の更なる改善が見込まれる .NET 6 以降まで待つ場合は、より高機能でバグの少ない CoreWCF を利用できるでしょう。
  • CoreWCF が十分に使えるレベルまで改善されるという保証はありません (ひょっとすると一生ないかもしれません)。プロジェクトの初期段階で WCF のコードが Microsoft から開発チームに提供されていますが、このチームはあくまでコミュニティベースで運営されています。つまり、「最終的には絶対完成する」というわけではありません。そのため、CoreWCF の使用が果たして自分にとって最適な選択肢なのかどうかと、移行するアプリケーションがこれを長期間使用すべきかどうかを考える必要があります。
  • CoreWCF は WCF を完全に再現するものではありません。そのため、自分に必要な機能が CoreWCF にはない可能性があります。そのような場合、当然ながら CoreWCF の使用は選択肢から外れることになります。

CoreWCF は、WCF と同じ形で使い続けられる一方で .NET Core の利点を活用できるため大変便利です。しかし、これは「WCF の使用がそもそも自分のアプリケーションに対して最適である」という前提に立っています。つまり、よりモダンなフレームワークを使いたい場合はどちらにしても WCF から別のフレームワークに移行する必要があります。

選択肢3: gRPC へターゲットするように切り替える

gRPC とは?: gRPC は、オープンソースのフレームワークです。これは、新しいアプリケーションを構築するチームや、まだ積極的に開発を行っているアプリケーション向けに Microsoft がおすすめしている方法です。

注意すべきこと: gRPC へ移行するにはコードを書き直す必要があります。しかし、移行の手間を少なくするツールがあることと、WCF はアプリケーションのコードベース全体に組み込まれていないことから、他のフレームワークへ移行するよりも簡単です。さすがに移行自体を気軽に行えはしませんし、短期的には時間とお金がかかりますが、長期的にはメリットの方が大きいので、早めに移行しておく方が後々のために良いでしょう。

考慮すべきこと:

  • 現在積極的にサポートされているフレームワークに移行することになります。gRPC へターゲットすると、すぐにパフォーマンスの改善、クロスプラットフォームのサポート、マイクロサービスといった .NET Core の恩恵を享受できます。.Net Core の機能が近い将来どのように自分のアプリケーションに役に立つのか、まずは調べておくだけでも損はありません。そして、もし実際に .NET Core へ移行する場合は、gRPC  へのターゲットが最適な選択肢となるでしょう。
  • 最新かつ人気なフレームワークを使うことになります。gRPC へのターゲットは、Microsoft と Google に支えられた、人気でオープンソースのフレームワークを使用するということを意味します。つまり、長期的に見た場合、gRPC に詳しい開発者を比較的安く簡単に雇えるということです。

WCF からの移行は、早ければ早いほど後々高い柔軟性を得られます。gRPC のような最新のフレームワークを導入した場合、.NET Framework で機能するかどうかを考えることなく、アプリケーションに変更を加えられるようになります。つまり、他のフレームワークを検討したり、アプリケーションのホスト方法を変更したりする際に、柔軟な対応が可能になります。

また、今すぐ移行を検討することで、レガシーな技術が原因となる変更の手間の増加も防げます。ソフトウェア開発の将来の予想は難しいので、必ずしも最先端の技術を使用する必要はありません。しかし、モダンなツールと技術を利用している場合は、.NET Framework や WFC よりも .NET 5+ や gRPC と動作する可能性の方が高いでしょう。

まとめ

WCF は .NET 5 のサポート終了に伴って消えるわけではないので、現在 WCF を使用しているアプリケーションをすぐに移行させないといけないわけではありません。しかし、計画だけはすぐに行いましょう。WCF を長く使い続ければ使い続けるほど、問題やリスクがどんどん大きくなるからです。

対策には、以下の 3 つの選択肢があります。

  • WCF をそのまま使用する。.NET Framework のサポートは継続されることから、アプリケーションは現在とまったく同じように機能し続けます。ただし、この判断が良いかどうかは、アプリケーションによって異なります。
  • CoreWCF の開発を待つ。
  • .NET 5 以降のフレームワークにおけるメリットを享受したい場合、gRPC に移行する。

WCF を使用している場合、利害関係者と移行の優先順位を決めて、おおまかなスケジュールを決めましょう。

それにはまず、そもそもアプリケーションを移行すべきかどうかを決めます。そして、もし移行を決めても、慌ててそれを実行する必要はありません。使用している機能に基づいてプラットフォームのターゲット先を決めたり、現在のプラットフォームのサポートが終了するまでの期間を調べたりする時間はまだあります。もしサポート終了まで時間的な余裕がある場合は、CoreWCF と gRPC をターゲットにするのが良いでしょう。いずれにせよ、WCF はこれからも長くサポートされるため、どのアプリケーションを本当に移行すべきなのかはよく検討しておきましょう。