それらの違いは何ですか?
どちらを選択するかはいつですか?
この回答は、もはや存在しない記事に基づいています。
記事の要約:
「基本的に、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よりも古く、ASMXでできることはすべてWCF(およびそれ以上)です。基本的に、WCFは、Microsoftの世界で通信する2つのアプリを取得するさまざまな方法をすべて論理的にグループ化しようとしているように見えます。 ASMXはこれらの多くの方法の1つに過ぎなかったため、現在はWCFの傘下にまとめられています。
WebサービスはHTTP経由でのみアクセスでき、さまざまな種類のアプリケーションでホストできるため、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で、またはウィンドウサービスを使用してホストできます。
基本的な主な違いは、ASP.NET WebサービスはHTTPでのみSOAPメッセージを交換するように設計されているのに対し、WCFサービスはHTTP、TCP、MSMQなどのトランスポートプロトコルで任意の形式(SOAPがデフォルト)を使用してメッセージを交換できることですまたはNamedPipesなど。
WebサービスとWCFの違いは何ですか?
Webサービスは、あるアプリケーションから別のアプリケーションにデータを転送する際に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と比較してパフォーマンスが優れているのはどれですか?
内部(ファイアウォールの背後)のサービス間呼び出しでは、net:tcpバインディングを使用します。これはSOAPよりもはるかに高速です。
WCFは、ASP.NET Webサービスよりも25%〜50%高速であり、.NET Remotingよりも約25%高速です。
どちらを選択するかはいつですか?
WCFは、他のプラットフォームで開発され、他のテクノロジを使用して開発された他のアプリケーション間の通信に使用されます。
たとえば、.netプラットフォームから、他のOS(UnixやLinuxなど)で実行されている他のアプリケーションにデータを転送する必要があり、他の転送プロトコル(WAS、TCPなど)を使用している場合、データの転送のみが可能ですWCFを使用します。
プラットフォームの制限はありません。アプリケーション間でデータを転送する際のアプリケーションの転送プロトコルです。
Webサービスと比較してセキュリティが非常に高い
主な違いはタイムアウトです。WCFサービスは応答がないときにタイムアウトしましたが、Webサービスにはこのプロパティがありません。