499

WCF の背後にある概念を把握するために数か月を費やし、最近、初めての WCF サービス アプリケーションを開発しました。

構成ファイルのすべての設定を理解するのにかなり苦労しました。
私は環境について確信が持てませんが、あなたはそれで素晴らしいことができるようです.

先日、Microsoft がASP.NET Web APIという新しいものを発表したことを知りました。

私が読むことができるのは、RESTful フレームワークであり、使用と実装が非常に簡単です。

現在、2 つのフレームワークの主な違いと、古いWCF サービス アプリケーションを新しい API に変換する必要があるかどうかを理解しようとしています。

誰かが、それぞれの違いと使用法を理解するのを手伝ってくれませんか?

4

11 に答える 11

253

私たちの場合、SOAP には WCF を使用し、REST には Web API を使用しています。Web API で SOAP もサポートされたらいいのにと思います。WCF の高度な機能は使用していません。MSDNからの比較は次のとおりです。

ここに画像の説明を入力

于 2013-05-02T18:20:06.680 に答える
191

新しいASP.NET Web APIは、以前のWCF Web APIプロジェクトの継続です (ただし、一部の概念は変更されています)。

WCF は、もともと SOAP ベースのサービスを有効にするために作成されました。より単純な RESTful または RPCish サービス (jQuery のようなクライアントを考えてください) には、ASP.NET Web API が適しています。

于 2012-02-19T19:48:53.903 に答える
80

ASP.net Web API は、HTTP および REST ベースの GET、POST、PUT、DELETE に関するものであり、よく知られている ASP.net MVC スタイルのプログラミングと JSON が返されます。Web API は、すべての軽量プロセスおよび純粋な HTTP ベースのコンポーネント用です。単純な、または最も単純な単一の Web サービスであっても、WCF を使用すると、すべての余分な荷物が発生します。ajax または動的呼び出しのための軽量でシンプルなサービスの場合、WebApi は常にニーズを解決します。これは、ASP.net MVC と並行して適切に補完または支援します。

ポッドキャストをチェックしてください: Hanselminutes Podcast 264 - これはあなたの父親の WCF ではありません -詳細については、Scott Hanselman による Glenn Block を使用した WebAPI について。

于 2012-04-03T20:42:01.820 に答える
68

以下にリストされているシナリオでは、WCFを使用する必要があります。

  1. TCP、MSMQ、MIMEなどのプロトコルでデータを送信する必要がある場合
  2. 消費するクライアントがSOAPメッセージの消費方法を知っている場合

WEB APIは、RESTful/HTTPサービスを開発するためのフレームワークです。

ブラウザやHTML5のようにSOAPを理解していないクライアントは非常に多く、そのような場合はWEBAPIが適しています。

HTTPサービスヘッダーは、サービスを保護する方法、情報をキャッシュする方法、メッセージ本文のタイプを指定し、HTTP本文は、SOAPサービスとしてのXMLだけでなく、HTMLなどのあらゆるタイプのコンテンツを指定できます。

于 2013-01-06T09:01:37.257 に答える
44

これまで両方を使用して以来、WCF と Web API の間には多くの違いがあることがわかりました。どちらのテクノロジ スタックもさまざまなシナリオに適しているため、どちらが優れているとは言えません。これは構成とシナリオによって異なります。

Properties              ASP.Net Web API                         WCF
--------------------------------------------------------------------------------------------------
End point (mainly)      Http based                              SOAP based
Service Type            Front End                               Back-end
Support                 caching, compression, versioning        No
Framework               ASP.net                                 WCF
Orientation             Resource Oriented                       Service Oriented
Transports              http                                    http, tcp, MSMQ, Named pipe
Message pattern         Request reply                           request Reply, one way, duplex
Configuration overhead  Less                                    Much
Security                lesser than WCF (web standard security) Very high (WS-I standard)
Hosting                 IIS                                     IIS, Windows Service, Self hosting
Performance             Fast                                    A bit slower than Web API
In use from             .NET 4.0                                .NET 3.5

注: データは私の見解だけでなく、他の公式 Web サイトからも収集されています。

于 2016-12-22T15:37:58.227 に答える
34

WCF はすぐに使用できる機能を備えており、他に匹敵するものはありません。認証、承認、暗号化、キューイング、スロットリング、信頼できるメッセージング、ロギング、セッションなどの独自の実装 (いくつか例を挙げると) を行いたくない場合を除きます。WCF は Web サービス [のみ] ではありません。WCF は SOA の開発プラットフォームです。

于 2014-07-02T10:42:16.203 に答える
10

ビジネス的に言えば、WebApi には WSDL がないため、開発者はすべてを手動で文書化する必要があります。また、たとえば、WebApi 操作がオブジェクトのリストを返す場合、クライアントはオブジェクトを手動で作成する必要があります。つまり、WebAPI は定義のエラーが発生しやすいということです。

Webapi の利点は、WCF よりも軽量であることです。

于 2016-03-04T12:33:34.547 に答える
7

「WebApi には WSDL がありません」というステートメントに関しては、Rest クライアントを生成する方法がいくつかあります。人気のあるアプローチの 1 つは Swagger UI / (Swashbukkle Nuget) です。これにより、REST エンド ポイントの入力および出力スキーマを理解するための豊富なインターフェイスと、エンド ポイントをテストするためのオンライン ツールが提供されます。

JSON LD (Json Linked Documents) は、より優れたセマンティクスで JSON スキーマを公開することにより、JSON ベースの REST 開発者エクスペリエンスをさらに向上させるもう 1 つの新しい標準です。

于 2016-09-13T06:34:27.690 に答える