WCF と Web API の違い
WCFとは何ですか?
WCFの略です Windows コミュニケーション Foundation分散型で相互運用可能なアプリケーションを作成するために使用されます。WCF は、サービス指向アプリケーションを開発するための効果的なプラットフォームです。開発者は、プラットフォーム間で統合でき、既存の投資と相互運用できる、安全で信頼性が高く、プロファイルの高い開発ソリューションを作成できます。
Web APIとは何ですか?
ASP.NET Web API は、ブラウザーやモバイル デバイス用の HTTP サービスを構築できるフレームワークです。 開発に最適なプラットフォームです RESTful アプリケーション ASP .NET Framework 上で。
ASP.NET Web API は、Web、Windows、モバイル デバイスなどのさまざまなプラットフォーム上のさまざまなアプリケーションからアクセスできる HTTP ベースのサービスを構築するための拡張可能なフレームワークです。
主な違い
- WCF は要求応答、一方向、または双方向を提供しますが、Web API はデフォルトで要求応答のみです。
- WCF は SOAP ベースのサービスの開発に使用されますが、Web API は SOAP ベースのサービスと RESTful サービスの両方に使用されます。
- Web API は MVC 機能をサポートしますが、WCF は MVC 機能のサポートを提供しません。
- WCF は HTTP、UDP、およびカスタム トランスポート プロトコルをサポートしますが、Web API は HTTP プロトコルのみをサポートします。
- WCF はテキスト、MTOM、バイナリ エンコーディングのサポートを提供しますが、Web API は UTF-8 エンコーディング形式をサポートします。
- WCF はメッセージ キュー、メッセージ セキュリティ、双方向通信、トランザクションをサポートしますが、Web API はサポートしません。
- WCFの略です Windows コミュニケーション Foundation 一方、API はアプリケーション プログラム インターフェイスの略です。
WCF を使用する理由
WCF を使用する利点は次のとおりです。
- WCF は、次の使用を計画している場合に理想的なオプションです。 .NET Framework 3.5。
- WCF は、HTTP、TCP、名前付きパイプなどの複数のプロトコルをサポートします。
- WCF サービスは、トランザクション メッセージング セキュリティや信頼性の高いメッセージ セキュリティなどの標準を使用してサービスを構築する場合に役立ちます。
- WCF では、要求/応答、一方向、および双方向のメッセージ交換パターンを使用できます。
Web APIを使用した理由
Web API を使用する利点は次のとおりです。
- Web API は HTTP 動詞 (GET、PUT、POST、DELETE) で動作するため、規則ベースの CRUD アクションをサポートします。
- REST-ful な方法で簡単に定義、公開、利用できます。
- ASP.Net Web API を使用すると、データとサービスをさまざまなデバイスに表示できます。
- Web API はオープンソースであるため、.NET プラットフォーム上で RESTful サービスを作成するための理想的なオプションです。
- 他の開発者が Web サービスにアクセスするために共有および使用できる Web サービスのスケーラブルな分離開発が可能になります。
- シンプルな非 SOAP ベースの HTTP サービスを構築することも役立ちます。
WCFの特徴
- 高度に構成可能なトランスポート
- シリアル化のためのより良いオプション
- IISとの統合が良好
- セルフホスティングが簡単
- 非常に豊富なメタデータ
- 出版のための複雑なモデル
- 豊富なデータ契約
Web APIの特徴
- HTTPと密接に結合
- テストが簡単
- コンテンツネゴシエーションのサポートを提供します
- 無制限の書式設定を可能にします
- プラットフォームに依存しない
- 確固たるリソース志向
- 初期段階のハイパーメディア サポートに関するレベル 2 の経験
WCF と Web サービスの比較
WCF | Web API | |
---|---|---|
メッセージ交換パターン | 応答、一方向、または双方向を要求します。 | デフォルトでは要求と応答のみです。 ただし、Web ソケットの統合により追加のメッセージ パターンをサポートできます。 |
ホスティング | IIS ホスティング、セルフホスティング、および作品アクティベーション サービス。 | セルフホスティングと IIS ホスティング。 |
オープンソース | オープンソース ソフトウェアではありません。 | .Net Framework に同梱されていますが、個別にダウンロードすることもできます。 |
MVC 機能のサポート | WCF は、コントローラー、ルーティング、フィルター、オークション結果などの MVC 機能のサポートを提供しません。 | ASP.NET Web API は、ルーティング、コントローラー、結果、フィルター、アクションなどの MVC 機能をサポートします。 |
エンコーディングのサポート | テキスト、MTOM、バイナリ。 | UTF-8 エンコード形式のデフォルトのサポート。 |
へのサポート | HTTP、UDP、およびカスタム トランスポート プロトコルのサポート。 | HTTPプロトコルのみをサポートします |
モデルの使用 | ユーザー属性ベースのプログラミング モデル。 | HTTP動詞をメソッドにマップします |
web.config と属性を使用して HttpConfiguration クラスを構成しますが、web.config サービスでは使用しません。 | Web API は、web.config サービスを使用して構成できます。 | |
RESTfulサービス | RESTFUL サービスのサポートを提供しますが、制限があります。 | RESTFUL サービスの構築に最適です。 |
WCF と Web API の決定要因
以下は、WCF と Web API のどちらを使用するかを判断するのに役立つ簡単なチェックリストです。
<span class="notranslate">シナリオ</span> | WCF4.5 | ASP.NET Web API |
---|---|---|
メッセージ キュー、エンド ツー エンドのメッセージ セキュリティ、二重通信、分散トランザクションなどのシナリオのサポートが必要です。 | 選択 | 選択しないでください |
すでに機能する既存の WCF サービスがあり、さらに HTTP サポートを追加したい場合。 | 選択 | 選択しないでください |
XNUMX つのコード ベースで SOAP エンドポイントと RESTful エンドポイントの両方をサポートします。 | 選択 | 選択しないでください |
HTTP 経由でリソース指向のサービスを作成したいと考えています。 | 選択しないでください | 選択 |
あなたのプロジェクトは MVC アプリケーションであり、HTTP 経由で何らかの機能が必要です。 | 選択しないでください | 選択 |
HTTP / RESTful サービスのみを構築したい | 選択しないでください | 選択 |