-
Notifications
You must be signed in to change notification settings - Fork 0
MS_WCF
- 戻る(WebAPI)
WCF (Windows Communication Foundation)
-
Windows プラットフォーム(.NET)上でのデファクトの通信サブシステム。
-
Address / Binding / Contract の三要素(ABC)によって定義される
(この ABC を部分的に切り替え可能にするように設計されている)。 -
WCF には様々な WS-* 標準が実装されたが、コケて WS-I が活動を停止して以降、下火に。
(WS-Addressing、WS-ReliableMessaging、WS-Security, etc. 普及せず時代はRESTへ。)
補足(ABC の中身): 三要素は次を指す。設定ファイルの構造もこのまま対応する。
要素 意味 例 Address どこにあるか(エンドポイント URI) http://host/Svc.svc/net.tcp://host/SvcBinding どう話すか(プロトコル・エンコーディング・セキュリティ) basicHttpBinding/netTcpBindingContract 何ができるか(インターフェイス定義) [ServiceContract]を付けた interface**「同じ Contract のまま Binding だけ差し替えれば、
HTTP でも TCP でも MSMQ でも動く」**というのが WCF の設計思想である。
抽象化としては非常に良く出来ていた。
- WCF サービスの簡略化された構成
https://learn.microsoft.com/dotnet/framework/wcf/simplified-configuration - 今時のWCFの構成ファイルは地獄じゃない - かずきのBlog@hatena
http://blog.okazuki.jp/entry/20120728/1343464321
移行メモ(補足): 「地獄じゃない」という記事タイトルが示すとおり、
WCF は設定ファイル(web.config/app.config)の複雑さが
敬遠された最大の理由の一つである。
.NET Framework 4 の「簡略化された構成」で既定値が使えるようになり
改善されたが、それでも REST + JSON の
手軽さには及ばなかった。
Binding には、
などがある。
| Binding | 用途 |
|---|---|
basicHttpBinding |
SOAP 1.1。相互運用性が最も高い |
wsHttpBinding |
SOAP 1.2 + WS-*。セキュリティ・信頼性 |
netTcpBinding |
.NET 同士専用。バイナリで高速 |
netNamedPipeBinding |
同一マシン内のプロセス間通信 |
netMsmqBinding |
MSMQ 経由。非同期・キューイング |
webHttpBinding |
REST 風(WCF REST) |
開発後、ABC の中核である B(Binding)の差替えも可能だが、
以下のケースでは差替えはサポートされない。
-
ホスト・プロセスが異なるケース
-
プログラミング・モデルが異なるケース
- MSMQ の Binding から他の Binding
- 単方向の Binding から双方向の Binding
この双方向はコールバックを伴う非同期双方向
補足(最新化:WCF は .NET Core に移植されなかった): 本ページの
「下火に」という評価は、その後サーバー側の打ち切りという形で確定した。
状況 .NET Framework 版 WCF 現在も動作するが、新機能の追加は無い(保守のみ) クライアント側 System.ServiceModel.*(旧 WCF Client)として .NET Core 以降でも利用可。既存の SOAP サービスを呼べるサーバー側 .NET Core 以降に移植されなかった。Microsoft は移植しないと明言した 代替(サーバー) コミュニティ製の CoreWCF(.NET Foundation プロジェクト)が受け皿になっている 現在の推奨は次の通り。
- 新規 → gRPC(
netTcpBinding的な高速 RPC が欲しい場合)
または REST + JSON(相互運用重視)- 既存 WCF の移行 → CoreWCF で最小の変更で .NET へ持っていく
なお gRPC は「Contract(
.proto)から
クライアント・サーバーのコードを生成し、バイナリで高速に話す」という点で、
WCF の netTcpBinding が担っていた役割の後継と位置づけられる。
-
Windows Communication Foundation - Wikipedia
https://ja.wikipedia.org/wiki/Windows_Communication_Foundation -
CoreWCF(.NET 向けの WCF サーバー実装)
https://github.com/CoreWCF/CoreWCF -
WCF から gRPC への移行 | Microsoft Learn
https://learn.microsoft.com/dotnet/architecture/grpc-for-wcf-developers/
-
クレイジーなWebサービス標準の全てを理解する
https://www.infoq.com/jp/articles/ws-standards-wcf-bustamante -
時代はRESTへ。SOAPの終わりを象徴する、
Webサービス標準化団体のWS-Iが活動終了 - Publickey
https://www.publickey1.jp/blog/10/restsoapwebws-i.html
Tags: 移行, 通信技術, .NET開発
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。