web-dev-qa-db-ja.com

WCF、Web API、WCF RESTとWebサービスの違いは?

WCFとWeb APIとWCF RESTとWebサービスの違いは何ですか? WCFは本当に複雑なので、webapiを使用する必要がありますか? WebApiがすべての作業を実行でき、他の機能を利用しないかどうか?

41
Aiyoub Amini

.Netフレームワークには、Webサービス、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動詞を有効にするには、IISでいくつかの構成を行って、.svcファイルでその特定の動詞の要求を受け入れる必要があります。
  • WebGetを使用してパラメーターを介してデータを渡すには、構成が必要です。 UriTemplateを指定する必要があります。
  • XML、JSON、およびATOMデータ形式をサポートしています。

Web API

  • これは、簡単で簡単な方法でHTTPサービスを構築するための新しいフレームワークです。
  • Web APIは、.NET Frameworkを介してREST-fulサービスを構築するための理想的なプラットフォームであるオープンソースです。
  • WCF Restサービスとは異なり、HTTPのすべての機能(URI、要求/応答ヘッダー、キャッシュ、バージョン管理、さまざまなコンテンツ形式など)を使用します
  • また、ルーティング、コントローラー、アクション結果、フィルター、モデルバインダー、IOCコンテナーまたは依存性注入などのMVC機能、よりシンプルで堅牢なユニットテストもサポートしています。
  • アプリケーションまたはIISでホストできます。
  • 軽量のアーキテクチャであり、スマートフォンのような帯域幅が制限されているデバイスに適しています。
  • 応答は、Web APIのMediaTypeFormatterによってJSON、XML、またはMediaTypeFormatterとして追加する任意の形式にフォーマットされます。

WCFまたはWEB APIのどちらを選択するか

  • 一方向メッセージング、メッセージキュー、二重通信などの特別なシナリオをサポートする必要があるサービスを作成する場合は、WCFを選択します。
  • TCP、名前付きパイプ、またはUDP(WCF 4.5)など、利用可能な場合に高速トランスポートチャネルを使用できるサービスを作成する場合はWCFを選択します。また、他のすべてのトランスポートチャネルが利用できない場合にもHTTPをサポートします。
  • HTTPのすべての機能(URI、要求/応答ヘッダー、キャッシュ、バージョン管理、さまざまなコンテンツ形式など)を使用できるHTTP経由のリソース指向サービスを作成する場合は、Web APIを選択します。
  • ブラウザ、モバイル、iphone、タブレットなどの幅広いクライアントにサービスを公開する場合は、Web APIを選択してください。

参照: http://www.dotnettricks.com
著者:シャイレンドラ・チャウハン

103
Aiyoub Amini

.Netフレームワークには、Webサービス、WCF、そして現在のWeb APIなどのHTTPサービスを作成できる多くのテクノロジーがあります。インターネットには、あなたが誰を使うべきかを説明する記事がたくさんあります。今では、.NETフレームワークでHTTPサービスを構築する多くの選択肢があります。ここでもっと読むことができます:

WCF vs ASP.NET Web API

WCFサービスvs ASP.NET Web API

1
Mohammad