なぜ私が答えているのですか?
これら2つのテクノロジーの違いを理解するのに、かなりの時間を費やしました。「この答えを探して迷っていたときにこれらのポイントがあった場合、必要なテクノロジーを選択することを非常に早く決定した」と私が思うこれらすべてのポイントをここに置きます。
情報源:
Microsoft®VisualStudio®2015の解放
ISBN-13:978-0-672-33736-9 ISBN-10:0-672-33736-3
ASP.NET Web APIとWCFが選ばれる理由:
ASP.NET Web APIとWCFのテクノロジーを比較する前に、Webサービスの作成には実際にはREST(Representational State Transfer)とSOAP / WSDLの2つのスタイル/標準があることを理解することが重要です。SOAP / WSDLは、Webサービスが構築される元の標準でした。ただし、使用が難しく、XMLなどのメッセージフォーマットが大きく、パフォーマンスが低下していました。RESTベースのサービスはすぐに代替手段となりました。HTTPの基本構成(GET、POST、PUT、DELETE)を利用し、通常はより小さなメッセージ形式(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など)をネゴシエートできます。サービス開発者は、回避しようとしていた同じ選択をすることに気づきました。今では、効率的な内部サービスを作成するか、インターネット経由で幅広いアクセスを提供できるようにするかを選択する必要があります。また、両方をサポートする必要がある場合は、サービスに複数のバージョンを作成するか、サービスにアクセスするために少なくとも個別のプロキシを作成する必要があります。これはマイクロソフトがWCFで解決した問題ですです。
WCFを使用すると、境界を気にすることなくサービスを作成できます。その後、呼び出し元のクライアントに応じて、サービスを最も効率的な方法で実行することをWCFに任せることができます。このタスクを管理するために、WCFはエンドポイントの概念を使用します。サービスに複数のエンドポイントがある場合があります(設計時または展開後に構成されます)。各エンドポイントは、サービスが呼び出し元クライアントをどのようにサポートするかを示します。Web経由、リモート経由、Microsoft Message Queuing(MSMQ)など。WCFを使用すると、サービス機能の作成に集中できます。呼び出し側のクライアントと最も効率的に話す方法が心配です。このようにして、単一のWCFサービスでさまざまな種類のクライアントを効率的にサポートできます。
WCFの例:
例を考えてみましょう:
顧客データはアプリケーション間で共有されます。各アプリケーションは異なるプラットフォームで作成され、異なる場所に存在する場合があります。共有された顧客データへの共通アクセスを提供するWCFサービスに顧客インターフェイスを抽出できます。これにより、データが一元化され、重複が削減され、同期が排除され、管理が簡素化されます。さらに、WCFを使用することにより、呼び出し側クライアントにとって意味のある方法で機能するようにサービスエンドポイントを構成できます。図は、WCFサービスで顧客データに一元的にアクセスする前の例を示しています。
結論:
i)Web APIを選択するタイミング:
ASP.NET Web APIを使用して作成されたようなRESTベースのHTTPサービスが、Webサービスを構築するための標準になったことは否定できません。これらのサービスは、サービスを構築するWeb開発者に簡単でわかりやすいアプローチを提供します。Web開発者はHTTP GETおよびPOSTを理解しているため、これらのタイプのサービスに適切に適応します。したがって、厳密にHTTPを対象とするサービスを作成している場合、ASP.NET Web APIが最適です。
ii)WCFを選択するタイミング:
WCFテクノロジは、さまざまなプロトコルとメッセージ形式に基づいて複数のサービスエンドポイントをサポートする必要がある場合に役立ちます。Microsoft BizTalkなどの製品は、WCFを利用して、Web経由でも、さまざまなマシン間構成経由でも使用できる堅牢なサービスを作成します。ただし、ローカルに接続したときにTCP / IPを介して通信するアプリケーションを作成する必要がある場合ネットワークとネットワークの外でHTTPを介して動作する場合、WCFがあなたの答えです。
警告する:
Web開発者は、WCFを開発するのがより困難で複雑であると見なすことがよくあります。したがって、マルチプロトコルサービスの必要性が予測できない場合は、ASP.NET Web APIを使用することになるでしょう。