9

ASP.NET Webサイトがより迅速な要求を自由に行えるように、長時間の処理を行うバックエンドサービスがあるプロジェクトを開始しようとしています。その結果、私はWCFやWeb APIなどのサービスを読んで、それらが何をしているのかを感じ取っています。このバックエンドサービスは、実際には相互に通信する複数のサービスで構成されており、お客様には公開されないため、WCFはこの種のシナリオに理想的なテクノロジのようです。

しかし、多くの調査を行った後でも、WCFとWebAPIの利点と違いについて混乱しています。一般的に、次のように思われます。

  • パブリックAPIやRESTfulAPIが必要な場合は、WebAPIが最適です
  • WCFは、HTTPだけでなく、はるかに多くのトランスポートをサポートできるため、それらをはるかに制御できます。
  • WCFの追加機能/複雑さにより、WebAPI開発はWCFよりも簡単に思えます

しかし、おそらく私の質問は次のように要約されます。

  1. とにかくRESTサービスがより有益なのはなぜですか?本格的なWCFサービスは、パブリックAPIにとって良いアイデアでしょうか?または、WCFサービスが提供できるWeb APIでは提供できないものはありますか?
  2. 逆に、相互に通信する必要のある内部サービスが多数あり、トランスポートとしてHTTPを使用するだけでよい場合、Web APIは突然実行可能なオプションになりますか?
4

3 に答える 3

10

私はいくつかの関連する質問に答えました:

追加のリソースとして、以下をお読みになることをお勧めします。

http://www.codeproject.com/Articles/341414/WCF-or-ASP-NET-Web-APIs-My-two-cents-on-the-subjec

RESTについて詳しく知りたい場合は、このMartinFowlerの記事を確認してください。

要約:

私の知る限り、両方のテクノロジはMicrosoftの同じチームによって開発されており、WCFは廃止されません。それでもオプションです(たとえば、サービスのパフォーマンスを向上させたい場合は、それらを公開できます)。 TCPまたは名前付きパイプを介して)。未来は明らかにWebAPIです

  • WCFはSOAPで動作するように構築されています

  • Web APIは、HTTPで動作するように構築されています

正しい選択をするために:

  • 特別なシナリオ(一方向メッセージング、メッセージキュー、二重通信など)をサポートするサービスを作成する場合は、WCFを選択することをお勧めします。
  • TCP、名前付きパイプ、またはUDP(WCF 4.5の場合)など、利用可能な場合に高速トランスポートチャネルを使用できるサービスを作成し、他のすべてのトランスポートが利用できない場合にもHTTPをサポートする場合は、次のようになります。 WCFを使用し、SOAPベースのバインディングとWebHttpバインディングの両方を使用することをお勧めします。
  • HTTPの全機能を使用できるHTTP経由のリソース指向サービスを作成する場合–ブラウザのキャッシュ制御、ETagを使用したバージョン管理と同時実行の定義、画像、ドキュメント、HTMLページなどのさまざまなコンテンツタイプの受け渡し、URIテンプレートの使用応答にタスクURIを含めるには、新しいWebAPIが最適です。
  • HTTPを介したリソース指向サービスとTCPを介したRPCスタイルのSOAPサービスの両方として使用できるマルチターゲットサービスを作成する場合は、最初に私に相談してください。いくつかの指針を示します。
于 2012-08-22T09:12:42.137 に答える
1

WCFの厄介な点の1つは、サービスで入力モデルや出力モデルが変更されたときに、新しいクライアントプロキシを生成する必要があることです。RESTサービスはプロキシを必要とせず、クライアントは送信されたクエリ文字列を変更するか、別の出力を解析および/または使用するように変更するだけです。

.NetのデフォルトのJSONシリアライザーは少し遅いことがわかりました。インバウンドと出力のシリアル化を行うために、http://json.codeplex.com/を実装しました。

WCFサービスはそれほど複雑ではありません。HTTPの範囲内で作業している場合、RESTサービスも同様に困難な場合があります。

于 2012-08-22T10:44:30.763 に答える
0

ASP.net Web APIは、HTTPおよびRESTベースのGET、POST、PUT、DELETEに関するものであり、ASP.netMVCスタイルのプログラミングとJSONリターナブルがよく知られています。Web APIは、すべての軽量プロセスおよび純粋なHTTPベースのコンポーネント用です。単純または最も単純な単一のWebサービスでもWCFを進めるには、余分な手荷物がすべて必要になります。ajaxまたは動的呼び出しのための軽量でシンプルなサービスの場合、WebApiは常にニーズを解決します。これは、ASP.net MVCをきちんと補完するか、並行して役立ちます。ポッドキャストをチェックしてください:Hanselminutes Podcast 264-これはあなたのお父さんのWCFではありません-詳細については、ScottHanselmanによるGlennBlockを使用したWebAPIに関するすべてです。

于 2012-10-25T04:49:16.633 に答える