私は.Netが初めてで、違いがわかりません。誰かが私を正しい方向に向けることができますか?
9 に答える
ASP.NET Web サービスは、Simple Object Access Protocol (SOAP) over HTTP を使用してメッセージを送受信するアプリケーションを構築するために開発されました。
WCF は、.NET Framework アプリケーションが他のソフトウェア エンティティとメッセージを交換できるようにするためのものです。デフォルトでは SOAP が使用されますが、メッセージは任意の形式にすることができ、任意のトランスポート プロトコルを使用して伝達できます。
ASP.NET Web サービスを WCF サービスのサブセットとして表示できます。
2 つのフレームワークを比較するリンクを次に示します。
違いを知るのはとても簡単です。
ASP.NET Web メソッドは [ファイル拡張子のため] ASMX と呼ばれます (これについては 4GuysFromRolla を確認してください。優れたチュートリアルがあります) 。
その技術により、機能を Web サービスとして公開できるため、どこからでも接続して使用できるようになります。しかし...サーバーとクライアント間のデータを保護することはできません。大きなファイルをクリアに送信して、何が起こったのかを知ることができます...
[注意] Web サービスへのアクセスを証明書で保護することもできますが、複雑ですが、通常、ASMX ではユーザー名/パスワードを使用します。
WCFでは、あなたはWebサービスについて別の世界にいます.これは.NETでサービスを公開するための最良のテクノロジーです(違いがわかりますか... サービス!Webサービスではありません).WCFはIISを実行する必要はありません。コンソール アンビエント (コマンド ラインなど) などを使用して、サーバー上でシステム サービスとして実行できるため、WCF は Web サービスではなくサービスであると言います。ASMX を実行するには IIS が必要であることを忘れないでください。
WCF では、SSL を使用して通信を暗号化できます (ASMX でこれを行うには、WSE - Web Services Enhancements を使用する必要があります)。大きなファイルを安全に送信できます (ASMX でこれを行うには、MTOM - Message Transmission Optimization Mechanismを使用する必要があります)。 )。
1行のコードを変更するだけで送信設定を設定できます。セキュリティははるかに高くなります:)
これで一般的な概要をよりよく理解していただければ幸いですが、他にもたくさんあります。
要点: 保護する必要のない Web サービスを公開するには、ASMX を使用できますが、まったく問題ありませんが、何らかの方法で通信を保護する必要がある場合は、WCF で行ってください!
上記の応答に加えて、WCF は .NET 3.0 以降の .NET Remoting を置き換えるために作成されました。さまざまな形式 (XML や JSON など) の SOAP、REST、POX などの Web サービスに加えて、WCF は MSMQ と名前付きパイプも提供します。前述のように、ASMX は SOAP ベースの XML Web サービスのみを提供します。
他のタイプの通信プロトコルについては、.NET Remotingを詳しく調べる必要があります。詳細については、Pro C# 2008 と .NET 3.5 Frameworkを確認してください。これは優れたリソースであり、以前の書籍から .NET Remoting やその他の置き換えられた機能について説明した章を入手できます。
ここに新しい大きな違いがあります。Microsoft は現在、ASMX Web サービスを "レガシー" テクノロジと見なしています。「ASP.NET および XML Web サービス クライアントを使用して作成された XML Web サービス 」を参照してください。
ウェブサービス
- HTTP経由でのみアクセスできます
- ステートレス環境で動作します
WCF
WCF は、そのサービスをさまざまな種類のアプリケーションでホストできるため、柔軟性があります。以下に、WCF サービスをホストするための一般的なシナリオをいくつか示します。
- IIS
- だった
- 自己ホスティング
- マネージド Windows サービス
Web サービスと WCF の主な違いを以下に示します。
Web サービス: Web サービスは、インターネットを介して他のアプリケーションと直接対話するように設計されたアプリケーションです。
1) [WebService] および [WebMethod] 属性は、Web サービスとメソッドを定義します。
2) HTTP 経由でのみアクセスできます。
3) IIS でホストされます。
4) セキュリティサービスをサポートします。
5) マルチスレッド化できません。
6) SOAP または XML のみを使用。
7) System.Xml.serialization 名前空間はシリアル化に使用されます
WCF :Windows Communication Foundation (コードネーム Indigo) は、ネットワーク分散サービスを構築、構成、展開するためのプログラミング プラットフォームおよびランタイム システムです。
1) [ServiceContract] および [OperationContract] 属性は、Web サービスとメソッドを定義します。
2) HTTP、TCP、MSMQ、P2P、名前付きパイプを介してアクセス
3) IIS、セルフホスティング、WAS、および Windows サービスでホスト。
4) サービス動作クラスを介してマルチスレッド化できます。
5) System.Runtime.Serialization 名前空間はシリアル化に使用されます
6) BasicHttpBinding、WSHttpBinding、WSDualHttpBinding などのさまざまな種類のバインディングをサポートします
7) セキュリティ サービス、信頼性の高いメッセージング、トランザクション、AJAX および REST のサポートをサポートします
それらはすべて一緒に2つの異なるものです。WCF は、1 つのサービス タイプ コンポーネントを作成し、それをさまざまな方法で (Asp.Net Web サービスとしても) 展開できる、より一般的なフレームワークです。
これについての簡単なスレッドがありますhttp://social.msdn.microsoft.com/Forums/en-US/wcf/thread/2d6a7ff2-f15c-4599-a389-a81cfffcc852/