回答:
この回答は存在しない記事に基づいています:
記事の要約:
「基本的に、WCFはさまざまな通信メカニズムを使用して通信できるアプリケーションを構築できるサービスレイヤーです。これにより、ピアツーピア、名前付きパイプ、Webサービスなどを使用して通信できます。
WCFは相互運用可能なアプリケーションを構築するためのフレームワークであるため、それらを比較することはできません。必要に応じて、SOAイネーブラーと考えることができます。これは何を意味するのでしょうか?
WCFはABCと呼ばれるものに準拠しています。Aは通信するサービスのアドレス、Bはバインディング、Cはコントラクトを表します。必ずしもコードを変更せずにバインディングを変更できるため、これは重要です。契約と実装の分離を強制するため、契約ははるかに強力です。これは、コントラクトがインターフェイスで定義されており、コントラクトの同じアイデアを使用してコンシューマがバインドする具体的な実装があることを意味します。データモデルは抽象化されています。」
...後で...
「Webサービスではなく、他の通信技術(ピアツーピア、名前付きパイプなど)と通信する必要がある場合は、WCFを使用する必要があります。」
WCFは、Microsoftの以前のすべてのWebサービステクノロジーに代わるものです。また、従来「Webサービス」と見なされていたものよりもはるかに多くのことを行います。
WCFの「Webサービス」は、WCFを介して可能になるはるかに広い範囲のリモート通信の一部です。WCFは、Microsoftが提供するさまざまな分散プログラミングインフラストラクチャをすべて要約するように一から設計されているため、従来のASMXを使用する場合よりも、WCFで物事を行う際の柔軟性と移植性が大幅に向上します。WCFのエンドポイントは、TCP /バイナリを介して行うのと同じくらい簡単にSOAP / XMLを介して通信できます。このメディアを変更するには、構成ファイルのmodを変更するだけです。理論的には、これにより、ビジネスニーズやターゲットなどを移植または変更するときに必要な新しいコードの量が減ります。
ASMXはWCFよりも古く、WCF(およびそれ以上)でASMXが実行できることは何でも可能です。基本的に、WCFは、Microsoftの世界で2つのアプリが通信するためのさまざまな方法をすべて論理的にグループ化しようとしていると見なすことができます。ASMXは、これらの多くの方法の1つにすぎなかったため、WCFの機能の傘下にグループ化されています。
WebサービスはHTTP経由でのみアクセスでき、WCFはさまざまな種類のアプリケーションでホストできるため、WCFが柔軟なステートレス環境で機能します。WCFサービスをホストするための一般的なシナリオは、IIS、WAS、セルフホスティング、マネージWindowsサービスです。
主な違いは、Webサービスの使用
XmlSerializer
です。しかし、WCFはとDataContractSerializer
比較してパフォーマンスが優れていXmlSerializer
ます。
Webサービス はSOAPに基づいており、データをXML形式で返します。HTTPプロトコルのみをサポートします。オープンソースではありませんが、xmlを理解しているクライアントであれば利用できます。IISでのみホストできます。
WCF はSOAPにも基づいており、データをXML形式で返します。これはWebサービス(ASMX)の進化であり、TCP、HTTP、HTTPS、名前付きパイプ、MSMQなどのさまざまなプロトコルをサポートしています。WCFの主な問題は、その面倒で広範囲にわたる構成です。オープンソースではありませんが、xmlを理解しているクライアントであれば利用できます。アプリケーションで、またはIISで、またはウィンドウサービスを使用してホストできます。
WebサービスとWCFの違いは何ですか?
Webサービスは、1つのアプリケーションから別のアプリケーションにデータを転送するときに、HTTPプロトコルのみを使用します。
ただし、WCFは、ASP.NET Webサービスよりも多くのメッセージ転送プロトコルをサポートしています。WCFは、HTTPのほか、伝送制御プロトコル(TCP)、名前付きパイプ、およびMicrosoftメッセージキュー(MSMQ)を使用したメッセージの送信をサポートしています。
Webサービスでサービスを開発するために、次のコードを記述します
[WebService]
public class Service : System.Web.Services.WebService
{
[WebMethod]
public string Test(string strMsg)
{
return strMsg;
}
}
WCFでサービスを開発するために、次のコードを記述します
[ServiceContract]
public interface ITest
{
[OperationContract]
string ShowMessage(string strMsg);
}
public class Service : ITest
{
public string ShowMessage(string strMsg)
{
return strMsg;
}
}
Webサービスは、アーキテクチャ的に堅牢ではありません。しかし、WCFは構造的により堅牢であり、ベストプラクティスを促進します。
WebサービスはXmlSerializerを使用しますが、WCFはDataContractSerializerを使用します。XmlSerializerと比較してどちらがパフォーマンスが優れていますか?
内部(ファイアウォールの背後)のサービス間呼び出しには、SOAPよりもはるかに高速なnet:tcpバインディングを使用します。
WCFは、ASP.NET Webサービスよりも25%〜50%高速で、.NET Remotingよりも約25%高速です。
どちらを選ぶのですか?
WCFは、他のプラットフォームで開発され、他のテクノロジを使用する他のアプリケーション間の通信に使用されます。
たとえば、.netプラットフォームから他のOS(UnixやLinuxなど)で実行されている他のアプリケーションにデータを転送する必要があり、他の転送プロトコル(WASやTCPなど)を使用している場合、データの転送のみが可能です。 WCFを使用します。
ここでは、プラットフォーム、アプリケーションの転送プロトコルの制限はありませんが、1つのアプリケーションから別のアプリケーションにデータを転送します。
Webサービスと比較してセキュリティが非常に高い
主な違いはタイムアウトです。WCFサービスは応答がないときにタイムアウトしましたが、Webサービスにはこのプロパティがありません。