WCF サービスと ASP.NET Web Api の実際の違いを共有できる人はいますか? どのシナリオでは、WCF サービスと ASP.NET Web Api を使用する必要があります。
3 に答える
WCF Web API は、次世代の Microsoft サービス フレームワークです。
WCF サービスは当初、システム間の通信に使用されるプロトコルとトランスポートのカスタマイズを可能にするチャネル アーキテクチャを使用して設計されました。これにより、アーキテクト/開発者は、相互運用可能なアプリケーションを構築する際に優れた柔軟性を得ることができますが、複雑さが犠牲になります。WCF の構成は決して単純ではありません (IMO)。
最も一般的なユース ケース (IMO) は、WCF サービスを使用して、ブラウザーから追加データの ajax 要求を介して Web アプリケーションにサポートを提供することです。また、WCF が最初に導入されたときから、アプリケーションが http を使用して API を提供することが一般的になりました。
このため、新しい WCF Web API は、サービス インフラストラクチャを簡素化し、http トランスポート プロトコルを想定する試みです。
新しい Web アプリケーションを構築する場合は、新しい Web API を使用します。別の http を使用して別のシステムと通信する必要がある場合にのみ、WCF サービスの使用を検討します。
WCF チャネル アーキテクチャ
http://msdn.microsoft.com/en-us/library/ms729840.aspx
WCF Web API
http://mattmilner.com/Milner/Blog/post/2012/02/28/WebAPI-or-WCF.aspxから、この問題に関する素晴らしい投稿: 「WCF は、トランスポートの柔軟性を重視するサービスを構築するためのフレームワークのままです。 . Web API は、HTTP を考慮したサービスを構築するためのフレームワークです。」
ウェブサービス
これは SOAP に基づいており、XML 形式でデータを返します。HTTP プロトコルのみをサポートします。これはオープン ソースではありませんが、xml を理解する任意のクライアントで使用できます。IIS でのみホストできます。
WCF
また、SOAP に基づいており、XML 形式でデータを返します。これは Web サービス (ASMX) の進化形であり、TCP、HTTP、HTTPS、名前付きパイプ、MSMQ などのさまざまなプロトコルをサポートします。WCF の主な問題は、面倒で大規模な構成です。これはオープン ソースではありませんが、xml を理解する任意のクライアントで使用できます。アプリケーション内、IIS 上、またはウィンドウ サービスを使用してホストできます。
WCFレスト
WCF を WCF Rest サービスとして使用するには、webHttpBindings を有効にする必要があります。[WebGet] および [WebInvoke] 属性によってそれぞれ HTTP GET および POST 動詞をサポートします。他の HTTP 動詞を有効にするには、.svc ファイルで特定の動詞の要求を受け入れるように IIS で構成を行う必要があります。 WebGet を使用してパラメーターを介してデータを渡すには、構成が必要です。XML、JSON、および ATOM データ形式をサポートする UriTemplate を指定する必要があります。
Web API
これは、簡単でシンプルな方法で HTTP サービスを構築するための新しいフレームワークです。Web API はオープン ソースであり、.NET Framework を介して REST フル サービスを構築するための理想的なプラットフォームです。WCF Rest サービスとは異なり、HTTP のすべての機能 (URI、要求/応答ヘッダー、キャッシュ、バージョン管理、さまざまなコンテンツ形式など) を使用します。ルーティング、コントローラー、アクション結果、フィルター、モデル バインダー、IOC などの MVC 機能もサポートします。コンテナまたは依存関係の注入、単体テストにより、よりシンプルで堅牢になります。アプリケーションまたは IIS でホストできます。軽量なアーキテクチャであり、スマートフォンなどの帯域幅が限られているデバイスに適しています。応答は、Web API の MediaTypeFormatter によって、JSON、XML、または MediaTypeFormatter として追加する任意の形式にフォーマットされます。
WCF と WEB API のどちらを選択するか
一方向メッセージング、メッセージ キュー、二重通信などの特別なシナリオをサポートする必要があるサービスを作成する場合は、WCF を選択します。TCP、名前付きなど、利用可能な場合に高速トランスポート チャネルを使用できるサービスを作成する場合は、WCF を選択します。パイプ、または場合によっては UDP (WCF 4.5 の場合) であり、他のすべてのトランスポート チャネルが利用できないときに HTTP もサポートする必要があります。HTTP のすべての機能 (URI、要求/応答ヘッダー、キャッシュ、バージョン管理、さまざまなコンテンツ形式など) を使用できる HTTP 経由のリソース指向のサービスを作成する場合は、Web API を選択します。ブラウザー、モバイル、iPhone、タブレットなど、幅広いクライアントにサービスを公開する場合は、Web API を選択します。