質問

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

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

先日、Microsoftが新しいものと呼ばれることがわかりました ASP.NET Web API.

私が読むことができるもののためにそれはaです 安らかなフレームワーク, 、非常に使いやすく実装できます。

今、私は2つのフレームワークの主な違いと、私が自分の変換を試みるべきかどうかを把握しようとしています 新しいAPIを使用したWCFサービスアプリケーション。

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

役に立ちましたか?

解決

新しい ASP.NET Web API 前の継続です WCF Web API プロジェクト(いくつかのもの 概念が変わりました).

WCFはもともと、石鹸ベースのサービスを有効にするために作成されました。よりシンプルなRESTFULまたはRPCISHサービス(jQueryなどのクライアントを考える)の場合、ASP.NET Web APIは良い選択です。

他のヒント

私たちにとって、WCFはSOAPおよびWeb APIに使用されます。 Web APIがSOAPをサポートしていることを願っています。 WCFの高度な機能は使用していません。以下はからの比較です MSDN:

enter image description here

ASP.NET Web APIは、HTTPとRESTベースのGET、POST、PUT、DELETE ASP.NET MVCスタイルのプログラミングとJSON Returnableに関するものです。 Web APIは、すべての軽量プロセスと純粋なHTTPベースのコンポーネント用です。シンプルまたは最もシンプルな単一のWebサービスでもWCFを進めるためには、すべての追加の手荷物がもたらされます。軽量の場合は、AjaxまたはDynamic Callsの簡単なサービスの場合は、常にWebAPIが必要性を解決します。これは、ASP.NET MVCをきちんと補完または並行して補完または支援します。

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

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

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

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

ブラウザのような石鹸、HTML5のような石鹸を理解していない非常に多くのクライアントがあります。そのような場合、Web APIは良い選択です。

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

今まで両方を使用して以来、WCFとWeb APIの間に多くの違いが見つかりました。両方のテクノロジースタックは、さまざまなシナリオでよく適しています。したがって、どちらがより良いと言うことはできません。これは構成とシナリオに依存します。

See this image to understand more differnce

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

WCFはあなたに箱から多くを提供します、それは何にも匹敵するものでさえありません。 (数例を挙げると)認証、承認、暗号化、キューイング、スロットリング、信頼できるメッセージング、ロギング、セッションなどの実装をしたい場合を除きます。 WCFは[Webサービスのみ]ではありません。 WCFはSOAの開発プラットフォームです。

なぜ私が答えているのか:

これら2つのテクノロジーの違いを理解するのに大量の時間をかけました。ここにすべてのポイントを置きます。「この答えを探していたときにこれらのポイントがあった場合、必要なテクノロジーを選択することに非常に早く決心しました」と思います。

情報源:

Microsoft®VisualStudio®2015Unleashed

ISBN-13:978-0-672-33736-9 ISBN-10:0-672-33736-3

なぜASP.NET Web APIとWCF:

ASP.NET Web APIとWCFのテクノロジーを比較する前に、REST(表現状態転送)とSOAP/WSDLのWebサービスを作成するための2つのスタイル/標準が実際にあることを理解することが重要です。 SOAP/WSDLは、Webサービスが構築された元の標準でした。ただし、使用することは困難であり、パフォーマンスを低下させるかさばるメッセージ形式(XMLなど)がありました。レストベースのサービスはすぐに代替手段になりました。 HTTPの基本的な構成要素(GET、POST、PUT、削除)を活用し、通常は小さなメッセージ形式(JSONなど)を使用するため、書き込みが簡単です。その結果、RESTベースのHTTPサービスは、Webを厳密にターゲットにするサービスを書くための標準となっています。

ASP.NET Web APIの目的を定義しましょう

ASP.NET Web APIは、RESTベースのHTTP Webサービスを開発するためのMicrosoftのテクノロジーです。 (SOAP/WSDLに基づいたMicrosoftのASMXをずっと前に置き換えました。)Web APIは、すべてのブラウザーとネイティブデバイスが理解するHTTPプロトコルに基づいて堅牢なサービスを簡単に書き込むことができます。これにより、アプリケーションをサポートするサービスを作成し、他のWebアプリケーション、タブレット、携帯電話、PC、ゲームコンソールから電話をかけることができます。現在現在のWeb接続を使用してHTTPサービスを何らかの形で活用するために、今日書かれたアプリケーションの大部分。

次に、WCFの目的を定義しましょう。

インターネット全体で通信することは、常に最も効率的な手段ではありません。たとえば、クライアントとサービスの両方が同じテクノロジー(または同じマシン)に存在する場合、より効率的な通信手段(TCP/IPなど)を交渉することができます。サービス開発者は、避けようとしているのと同じ選択をしていることに気付きました。彼らは今、効率的な内部サービスを作成することと、インターネット上で幅広いアクセスを見つけることができるかどうかを選択する必要があります。そして、彼らが両方をサポートする必要がある場合、彼らは彼らのサービスの複数のバージョンを作成する必要があるかもしれません。 これは、MicrosoftがWCFで解決した問題です.

WCFを使用すると、境界に関係なくサービスを作成できます。その後、Callingクライアントに応じて、WCFにサービスを最も効率的に実行することを心配させることができます。このタスクを管理するために、WCFはエンドポイントの概念を使用します。サービスには複数のエンドポイント(設計時または展開後に構成)がある場合があります。各エンドポイントは、サービスが呼び出しクライアントをどのようにサポートするかを示します。ウェブ上、リモート、Microsoft Message Queuing(MSMQ)などを介して。 WCFを使用すると、サービス機能の作成に集中できます。コールクライアントと最も効率的に話す方法を心配しています。このようにして、単一のWCFサービスは、多くの異なるクライアントタイプを効率的にサポートできます。

WCFの例:

例を考えてみましょう:

顧客データはアプリケーション間で共有されます。各アプリケーションは別のプラットフォームに記述される場合があり、別の場所に存在する場合があります。共有顧客データへの共通のアクセスを提供するWCFサービスに顧客インターフェイスを抽出できます。これにより、データが集中化され、重複が減少し、同期を排除し、管理が簡素化されます。さらに、WCFを使用することにより、通話クライアントにとって理にかなっている方法で動作するようにサービスエンドポイントを構成できます。図は、WCFサービスで顧客データを集中的にアクセスした以前の例を示しています。

This is how WCF serves different clients

結論:

i)Web APIを選択するタイミング:

ASP.NET Web APIを使用して作成されたようなRESTベースのHTTPサービスが、Webサービスを構築するための標準になっていることを否定することはできません。これらのサービスは、Web開発者がサービスを構築するための簡単で簡単なアプローチを提供します。 Web開発者は、HTTPの取得と投稿を理解しているため、これらのタイプのサービスによく適応します。したがって、あなたが書いている場合 サービス 厳密にターゲットにされています http, 、ASP.NET Web APIは論理的な選択です。

ii)WCFを選択するタイミング:

WCFテクノロジーは、さまざまなプロトコルとメッセージ形式に基づいて複数のサービスエンドポイントをサポートする必要がある場合に役立ちます。 Microsoft biztalkレバレッジWCFなどの製品は、さまざまなマシンからマシンへの構成を介してWebで使用できる堅牢なサービスを作成するための堅牢なサービスを作成するための製品を作成します。 ローカルネットワークに接続したときにTCP/IPを介して通信し、ネットワークの外側でHTTPを介して動作するアプリケーションを作成する必要があります。WCFはあなたの答えです.

注意してください:

Web開発者は、WCFを開発するのがより困難で複雑であると見なすことがよくあります。したがって、マルチプロトコルサービスの必要性を予測しない場合は、ASP.NET Web APIに固執する可能性があります。

これについてMSDNには比較があります

WCFおよびASP.NET Web API

私にとって、選択はクライアントが誰であるか、そして彼らはどこにいるのかということでした。

会社ネットワークおよび.NETベースのクライアント内: TCPバインディングでWCFを使用します(HTTPよりも高速通信)

会社のネットワークの外で、PHP、Pythonなどの多様なテクノロジーを使用します: :RESTでWeb APIを使用します

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

WebAPIのプロは、WCFよりも軽量です。

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

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

WCFを使用すると、TCP、httpなどの複数のエンドポイントに対して同じサービスサポートを構成および公開できます。サービスをHTTPベースにしたい場合は、Web APIを使用する方が良いでしょう。 Web APIの構成は、WCFと比較すると非常に少なくなり、WCFよりも少し高速です。 WCFはRestful Servicesもサポートしています。 .NETフレームワーク3.5の制限がある場合、オプションはWCFです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top