ASP.NET Web サービスを WCF に移行する

ASP.NET には Web サービスを構築するための .NET Framework クラス ライブラリとツールが用意されています。また、インターネット インフォメーション サービス (IIS) 内でサービスをホストする機能も用意されています。 Windows Communication Foundation (WCF) には、.NET Framework クラス ライブラリ、ツール、およびホスティング機能が用意されています。このため、ソフトウェア エンティティでは、Web サービスで使用されるものを含む、任意のプロトコルを使用して通信することができます。 ASP.NET Web サービスから WCF に移行すると、WCF 独自の新しい機能や強化された機能をアプリケーションで利用できます。

WCF には、ASP.NET Web サービスと比較した場合に重要な利点がいくつかあります。 ASP.NET Web サービスのツールは Web サービスの構築専用であるのに対して、WCF が提供するツールは、ソフトウェア エンティティを互いに通信させる必要がある場合にも使用できます。 これにより、さまざまなソフトウェア通信シナリオを実現するために開発者が知っておく必要があるテクノロジの数が少なくて済むため、ソフトウェア開発プロジェクトが完了するまでの時間だけでなく、ソフトウェア開発リソースのコストが削減されます。

Web サービスの開発プロジェクトの場合でも、WCF では ASP.NET Web サービスよりも多くの Web サービス プロトコルがサポートされます。 これらの追加プロトコルにより、特に信頼できるセッションとトランザクションという点で、より洗練されたソリューションが実現されます。

WCF では ASP.NET Web サービスに比べ、多くのメッセージ トランスポート用プロトコルがサポートされます。 ASP.NET Web サービスでは、HTTP (ハイパーテキスト転送プロトコル) を使用したメッセージの送信しかサポートしていません。 WCF では、HTTP を使用したメッセージの送信のほかに、TCP (伝送制御プロトコル)、名前付きパイプ、MSMQ (Microsoft メッセージ キュー) がサポートされます。 さらに重要なことは、WCF を拡張することにより、追加のトランスポート プロトコルをサポートできることです。 これにより、WCF を使用して開発されたソフトウェアは、他の多様なソフトウェアと連携するよう適合させることができるため、投資収益率を高めることができます。

WCF では、ASP.NET Web サービスに比べ、アプリケーションを展開および管理するための機能が格段に豊富に提供されています。 ASP.NET でも用意されている構成システムに加えて、WCF では構成エディター、任意の数の中継局を介した送信者から受信者へのアクティビティ トレース、トレース ビューアー、メッセージ ログ、多数のパフォーマンス カウンター、Windows Management Instrumentation のサポートなどが用意されています。

ASP.NET Web サービスと比較したときの WCF の潜在的なベネフィットを考えると、ASP.NET Web サービスを使用している、または使用を検討している場合、次のような選択肢があります。

  • ASP.NET Web サービスの使用を継続し、WCF で提供されるベネフィットについては見送ります。

  • 将来的には WCF を採用することを見据えながら、ASP.NET Web サービスの使用を継続します。 このセクションのトピックでは、新規作成する ASP.NET Web サービス アプリケーションと将来の WCF アプリケーションとを同時に使用できる可能性を最大限にする方法について説明します。 また、このセクションのトピックでは、WCF への移行を容易にするための、新規の ASP.NET Web サービスの構築方法についても説明します。 ただし、サービスのセキュリティ保護が重要な場合、信頼性やトランザクションの確実性が求められる場合、またはカスタムの管理機能を構築する必要がある場合は、WCF の採用をお勧めします。 WCF は、まさにこのようなシナリオのために設計されています。

  • 新規開発については WCF を採用し、既存の ASP.NET Web サービス アプリケーションは保持します。 おそらくこれが最適な選択です。 WCF のベネフィットを引き出しつつ、既存のアプリケーションを変更してこれを使用できるようにするためのコストを削減できます。 このシナリオでは、新規の WCF アプリケーションは、既存の ASP.NET アプリケーションと共存できます。 新規の WCF アプリケーションでは既存の ASP.NET Web サービスを使用でき、また WCF には ASP.NET 互換モードがあるため、WCF を使用して既存の ASP.NET アプリケーションに新しい処理機能をプログラムできます。

  • WCF を採用し、既存の ASP.NET Web サービス アプリケーションを WCF に移行します。 このオプションは、WCF が提供する機能を使用して既存のアプリケーションを拡張する場合、または既存の ASP.NET Web サービスの機能を新しく、より強力な WCF アプリケーションの中で作り直す場合に選択します。

Note

WCF サービスが IIS 5.x によってホストされており、ASP.NET がアンインストールされている場合は注意が必要です。 WCF サービスが IIS 5.x によってホストされていて、ASP.NET がアンインストールされている場合、サービスのコードが要求されることがあります。 IIS 5.x が実行されているオペレーティング システムで ASP.NET がアンインストールされており、さらに WCF がアンインストールされると、拡張子 .svc を持つファイルがテキスト ファイルと見なされ、これに含まれる、ソース コードを含む内容は要求元に返されます。

このセクションでは、上記のオプションの詳細、ASP.NET Web サービスと WCF との比較、ASP.NET Web サービスのコードを WCF に移行する方法の手順について説明します。

関連項目