web-dev-qa-db-ja.com

WCF Web APIとASP.NET Web APIの違いは何ですか

私は過去にWCF WebAPIを使用して少し作業をしましたが、その機能の多くが本当に好きでした。現在ASP.NET Web APIで遊んでいるだけで、まったく違うようです(IEはWCFから完全に削除されました)。

WCF WebAPIのどの機能がASP.NET 4 Web APIに含まれているかを知っていますか?

40
Luke McGregor

私はこれについてもう少し読んで、これに関するMSの人々によるいくつかのページを見つけました:

http://wcf.codeplex.com/wikipage?title=How%20to%20Migrate%20from%20WCF%20Web%20API%20to%20ASP.NET%20Web%20API

WCF Web APIの抽象化は、おおよそ次のようにASP.NET Web APIにマップされます。

WCF Web API-> ASP.NET Web API

  • サービス-> Web APIコントローラー
  • 操作->アクション
  • サービス契約->該当なし
  • エンドポイント->該当なし
  • URIテンプレート-> ASP.NETルーティング
  • メッセージハンドラ->同じ
  • フォーマッタ->同じ
  • 操作ハンドラー->フィルター、モデルバインダー

および http://wcf.codeplex.com/discussions/319671

統合スタックは、次の機能をサポートしています。

  • 最新のHTTPプログラミングモデル
  • ASP.NETルーティングの完全サポート
  • コンテンツネゴシエーションとカスタムフォーマッタ
  • モデルのバインドと検証
  • フィルター
  • クエリ構成
  • ユニットテストが簡単
  • DependencyResolverによる制御の反転(IoC)の改善
  • コードベースの構成
  • セルフホスト
22
Luke McGregor

WCF自体は、どういうわけか死にかけているか、少なくとも予想以上に重要性が低くなっているように見えます。そのため、その機能セットに投入される開発の労力もはるかに少なくなっています。 WCFの新機能 自体はより見栄えが良いです。

WCFは、プロセス間通信のためのトランスポート/プロトコルに依存しない方法として設計されました。アイデアでさえ独立した抽象化であり、ほとんどがSOAPスタックの上に構築されました。 WCF 3.5がRESTのサポートをもたらしたとき、RESTはすべてトランスポート依存関係であるため、ほとんどがハッキングされました。トランスポートに依存しないAPIを使用して、トランスポート機能を直接使用して行われるプロセス間通信をサポートすることは、不都合なように思われました。その結果、MSはRTMに到達したことのないWCF Rest API Starter Kitを最初にリリースしましたが、機能のプレビューであり、後にWCF 4に組み込まれ、最終的に.NET 4.5またはWCF Web APIに組み込まれました。 RESTはトランスポートに依存し、現在HTTPでのみ使用されているため(理論的には他のトランスポートプロトコルを使用することさえ可能)、APIはHTTP処理により適した.NETパートに移動されました-現在非常に人気のあるASP .NET MVC。

14
Ladislav Mrnka

私が学んだことから、Microsoftはここで少し名前の混乱を起こしました。

WCFが何であるかを知っていると思います。この大きなフレームワークはXMLの上に構築され、ユーザーがさまざまな技術(SOAPからRESTからMSMQなど)で分散サービスを構築できるようにします)。

(少なくとも私にとって)使用するのは地獄のように難しく、それを機能させるために多くのbootstrapを必要とし、最終的に彼らはこれを認識し、単純なhttpサービス(WCF RESTスターターキットの誰か?)。 ASP.NET MVCは勢いを増しており、ASP.NET MVCが提供する機能の一部(自動引数一致など)がWCFに現れ始めました。

状況は次のとおりです。

お知らせ:WCF Web APIがASP.NET Web APIになりました! ASP.NET MVC 4 BetaでリリースされたASP.NET Web API。このサイトのjQueryコンテンツに対するWCF Web APIおよびWCFサポートは、2012年末までに削除されます。

http://wcf.codeplex.com/wikipage?title=Getting%20started:%20Building%20a%20simple%20web%20api

そして、それはより良い私見です。

WCFの上にasp.net mvc4 webapiをホストすることは可能だと確信しています(必要な場合)が、私が正しい(または間違っている)ことを証明できるドキュメントは見つかりません。

[〜#〜] update [〜#〜](コメントとして収まらない):待って、「サブセットの移動とライブラリ/フレームワークから別のフレームワークへの通信技術」および「WCFの置き換え」。個人的には、WCFは何らかのコミュニケーションコンセプト用に設計され、かなりクールなデザインを持っていると思いますが、分散コンピューティングは新しい(よりシンプルな)ソリューション(機能豊富なSOAPとリーン柔軟性のあるREST(多くの人は依然としてRPC方式でRESTを使用しています)。この種のプログラミングパターンは、WCFよりもMVCアーキテクチャに適していると思います。 WCFの上にWebサービスを構築/使用する簡単な方法を設計する努力がなされましたが、最終的にはそれが適切なソリューションではないことがわかりました。

多くの開発者が現在ASP.NET MVCを使用しており、WebアプリのWebサービスを休ませたいことは言うまでもありません。WCFをいじるのは、この種のことではしばしばやり過ぎです。

ルーティングメカニズムは素晴らしく、正しい方法だと思います。よく見ると、それらはWCFにその一部(異なる名前とタイプを持ちますが、パターンはそこにありました)を含んでいます。ですから、MSがWCFのその部分を無視しないのであれば[〜#〜] we [〜#〜]すべきです。厳密に答えると、いいえ、asp.net mvc *でWebGet/WebInvokeを見つけることはないと思いますが、ちょうど収まりません。

ええ、セルフホストはおそらく、ASP.NET MVC4に含まれているWCFの唯一のビットです。

14
WDRust

WCF Web APIは、WCF Web APIの機能を取得し、ASPNet MVCの機能とマージするASP.NET Web APIに置き換えられました。 ASP.NET Web APIは、HTTPサービスを構築および使用するための新しい(2012年2月)フレームワークであり、RESTfulサービスを構築するためのプラットフォームです。

元の質問にはありませんが、WCFが正常であり、既存のREST(WS- *)がある場合、そのSOAPサポートは引き続き有用であることに注意してくださいサポートする必要があるが、より多くのクライアントに到達するためにREST=を追加したいサービス.

参照

  1. CodePlex:WCF Web APIは現在ASP.NET Web APIです
  2. CodePlex:WCFの未来に関するダニエルロス
  3. Chanel9:新しいASP.NET Web APIのDan Roth
9
ScottWelker

このMSDNページ にある次の抜粋は、このジレンマをうまく要約しています。

WCFを使用して、さまざまなトランスポートを介してアクセスできる信頼性の高い安全なWebサービスを作成します。 ASP.NET Web APIを使用して、さまざまなクライアントからアクセス可能なHTTPベースのサービスを作成します。新しいRESTスタイルのサービスを作成および設計する場合は、ASP.NET Web APIを使用してください。 WCFはRESTスタイルのサービスを記述するためのサポートを提供しますが、ASP.NET Web APIのRESTのサポートはより完全であり、将来のすべてのREST ASP.NET Web APIで機能が改善されます。既存のWCFサービスがあり、追加のRESTエンドポイントでは、WCFとWebHttpBindingを使用します。

1

Webサービス、WCF、およびWeb APIに関する良い記事があります http://goo.gl/T29A5B

Webサービス

  • SOAPに基づき、XMLデータを返す
  • HTTPプロトコルのみをサポートします。 HTTPプロトコルのみをサポートします。
  • Xml SOAP Services。を理解できるクライアントによって消費されます。
  • IISでホストできます。 IISでのみホストできます。
  • 学びやすく理解しやすい。

[〜#〜] wcf [〜#〜]

  • SOAPに基づいてXMLデータを返します。SOAPはJSONとネットワーク上のオーバーヘッドも比較して重いです。
  • Webサービスの拡張バージョンは、構成を介してTCP、HTTP、HTTPS、名前付きパイプ、MSMQなどの複数のプロトコルをサポートします。
  • クライアントとサーバーの両方に.Netがある場合の信頼性が向上します。
  • その実装と構成は複雑です
  • Xml SOAP Services。を理解できるクライアントによって消費されます。
  • セルフホスティング、IISおよびWindowsサービスの使用。

Web API(Web API 2.0)

  • .NET FrameworkでHTTP Restful Servicesを構築するための特別な設計。
  • JSONとして読みやすく便利なWeb API。
  • HTTP Like URls、リクエスト/レスポンス、ヘッダー、キャッシング、バージョニングのすべての機能をサポートします。
  • Web APIは、GET、POST、PUT、DELETEなどの多くのHTTP動詞をサポートします。
  • Web APIはステートレスです。
  • Web APIはMVC機能をサポートしています(コントローラー、アクション結果、ルーティング、フィルター、モデルバインダー、IOCコンテナーまたは依存性注入)
  • Web APIは自己ホスト型であり、アプリケーション内およびIIS上でホストできます。
  • OWIN(Open Web Interface for .NET)は、セルフホスティングに使用されます。
1
Bhuvnesh

ASP.net Web APIは軽量で、RESTサポート組み込み。モバイルアプリケーションに適しています。

0
Bumble