WCFとASP .Net Web API


93

各テクノロジーを使用することの長所と短所は何ですか?

WCF Web ApiがAsp.netに統合されましたAsp.net Web apiがセルフホスティングをサポートするようになりました。

同じ操作で複数のプロトコルスキーマを公開したい場合でも、まだWCFに頼るか、Mvcエンドポイントでもこれを実行できるのかと思います。

また、新しいAsp.Net Web APIはWsdlを公開しますか?そうでない場合、クライアントはどのような操作が可能かをクライアントがどのように理解するでしょうか?

間違いなく、Mvcの最高の機能はモデルバインダーです。WCFと同等の堅牢性はありますか?

では、Asp.net Web APIがもたらすメリットを誰かに教えてもらえますか?WCFの方が圧倒的に強力でスケーラブルな選択肢、imoのようです。Mvc Web ApiがWCFモデルに対して持っている唯一のことは、おそらく開発の容易さですが、それは、それが最終的に深刻な設計上の制限となる場合、不法占拠を意味します。


15
この質問のタイトルは少し誤解を招くと思います。タイトルは「MVC 4対Wcf Web API」ですが、問題はWCF対ASP .Net Web APIをより多く扱うようです。タイトルから、比較されているのは標準のMVC 4フレームワーク(コントローラー、モデル、ビュー)とASP .Net Web APIフレームワークだと思いました。他の誰かがこのタイトルを誤解させると思いますか?
BruceHill 2013

回答:


72

まず、この件に関する私の投稿を読むことをお勧めします。http//blogs.microsoft.co.il/blogs/idof/archive/2012/03/05/wcf-or-asp-net-web-apis-my- two-cents-on-the-subject.aspx

WSDLの質問について-WebApiはSOAPを使用しないため、WSDLを必要とせず、WSDLをエクスポートしません。ハイパーメディアを使用して、可能なアクティビティURLのリストを含むリソースを返すことができます(自己記述型リソースと考えてください)。


6
これは非常に優れた記事です。私が今まで見た中で最高のもの。しかし、私は今まで以上に混乱しています。WebApiは非常に多くを追加しますが、他のエンドポイントを公開できないことは非常に制限的なようです。soapを使用できるクライアントがある場合、soapがそれらのコンテキスト全体を生成できたときに、アクションをビルドして結果を手動で解析するようにクライアントに強制されます。また、信頼できるセッションやAcidトランザクションなどのより高度なSoap機能からそれらをロックアウトします...ため息。
アルウィン、2012年

2
@Alwyn-あなたが言及したすべての事実は真実であり、したがって混乱を招くべきではなく、決定を下すのに役立つと思います-Web APIには独自の利点がありますが、他のプロトコルを含む複数のエンドポイントからサービスを公開する必要がある場合は、または、クライアントの自動生成機能または
SOAPの

@BornToCode:クライアントコードはWebAPIで自動生成できます。WebAPIコードを使用してSwagger jsonファイルを作成できます。次に、そのjsonファイルをswagger-codegenなどのコードジェネレーターで使用して、多数のターゲット言語でクライアントコードを生成できます。
意図せず空白のままに

@unintentionallyleftblank-IMHO Web APIよりもWCFを介してクライアントコードを自動生成する方が「ユーザーフレンドリー」です。
BornToCode 2018

15

選択は、何をしたいかに依存します。

  1. ASP.NET Web APIは、非SOAPベースのサービスをHTTPでのみ構築するためのフレームワークです。そのため、このフレームワークを使用して利用できるトランスポートプロトコルはこれ以上ありません。
  2. WCF / Windows Communication Foundationは、SOAPベースのメッセージを交換するためのフレームワークです。ここでは、HTTP、TCP、名前付きパイプ、MSMQなど、多くのトランスポートプロトコルを使用しています。

低プロトコルを使用できるので、データ量、WCFのどちらに関してパフォーマンスが優れているかはわかりません。コメントは大歓迎です。


2
問題はありませんが、HTTPは単なるアプリケーション層プロトコルです。使用できるトランスポート層プロトコルに固有の制限はありません。
smwikipedia 2013年

8

WCF Web APIは、主にREST実装に焦点を当てています。REST実装をセットアップする場合、標準のWCFビットは後部で少し面倒です。RESTfulなサービスをセットアップしている場合、WCF Web APIの方がはるかに優れたエクスペリエンスが得られます。SOAPサービスを設定している場合、WCF Web APIはあなたの親友ではないので、サービスにWCFを使用するほうがよいでしょう。


2
はい、設定は面倒ですが、1回限りのセットアップ費用です。完了したら、動作/エンドポイントをコピーして別のサービスにほとんど貼り付けることができます。ほとんどの場合、新しい操作にWebGetのタグを付けるだけで取得できます。一方、Soap + Wsdlを使用したいクライアントを取得した場合、それはコード+デプロイ+ QA +残りとは対照的に、すべて構成の変更です。では、Mvc Web Apiはどのように優れているのでしょうか。
アルウィン、

1
WCFに既に慣れている場合は、その方法を続行できます。私が言及したことに加えて、WCF Web APIのRESTにはいくつかの内部的な改善点があります(私は目の前にリストがありません)どちらでも機能します。作業サービス、特に。思考のパラダイムシフトが少しあるからです。ただし、今後の作業のために、WCF Web APIを検討します。しかし、私はかなり前からWCF Web APIを使用しているため、偏見があるかもしれません。
Gregory A Beamer 2012年

0

イントラネット/ B2BサイトにWCFを使用するn B2C / C2C /インターネットサイトにWeb APIを使用する... SOAP / XMLは、企業内通信の標準であり、nがなくなることはありません!!!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.