私は過去にWCF WebAPIを使用して少し作業をしましたが、その機能の多くが本当に好きでした。現在ASP.NET Web APIで遊んでいるだけで、まったく違うようです(IEはWCFから完全に削除されました)。
WCF WebAPIのどの機能がASP.NET 4 Web APIに含まれているかを知っていますか?
私はこれについてもう少し読んで、これに関するMSの人々によるいくつかのページを見つけました:
WCF Web APIの抽象化は、おおよそ次のようにASP.NET Web APIにマップされます。
WCF Web API-> ASP.NET Web API
および http://wcf.codeplex.com/discussions/319671
統合スタックは、次の機能をサポートしています。
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。
私が学んだことから、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の唯一のビットです。
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=を追加したいサービス.
参照
この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を使用します。
Webサービス、WCF、およびWeb APIに関する良い記事があります http://goo.gl/T29A5B
Webサービス
[〜#〜] wcf [〜#〜]
Web API(Web API 2.0)
ASP.net Web APIは軽量で、RESTサポート組み込み。モバイルアプリケーションに適しています。