web-dev-qa-db-ja.com

asp.net WebメソッドとWCFサービスの違いは何ですか?

私は.Netを初めて使い、その違いを理解していません。誰かが私を正しい方向に向けることができますか?

56
user29440

ASP.NET Webサービスは、HTTP経由のシンプルオブジェクトアクセスプロトコル(SOAP)を使用してメッセージを送受信するアプリケーションを構築するために開発されました。

WCFは、.NET Frameworkアプリケーションが他のソフトウェアエンティティとメッセージを交換できるようにするためのものです。 SOAPがデフォルトで使用されますが、メッセージは任意の形式にすることができ、任意のトランスポートプロトコルを使用して伝達されます。

ASP.NET Webサービスは、WCFサービスのサブセットとして表示できます。

ここ は、2つのフレームワークを比較するリンクです。

違いを知るのはとても簡単です。

ASP.NET WebメソッドはASMXと呼ばれます[ファイル拡張子のため](これについては4GuysFromRollaを確認してください 良いチュートリアル があります)

そのテクノロジーにより、機能をWebサービスとして公開し、どこからでも接続して使用できるようになります。しかし...サーバーとクライアントの間でデータを保護することはできません、大きなファイルを送信して何が起こったのかを知ることができます...

[注]証明書を使用してWebサービスへのアクセスを保護できますが、複雑ですが、通常、ASMXではユーザー名/パスワードを使用します。

wCFでは、Webサービスについて別の世界にいます。これは、サービスを公開するための.NETの最高のテクノロジーです(違いを確認できます...Services!notWeb Services)、WCFは必要ありませんIIS実行するには、コンソールのアンビエント(コマンドラインなど)を使用してサーバー上でシステムサービスとして実行できるため、WCFはWebサービスではなくサービスであると言います。ASMXにはIIS実行します。

wCFでは、SSLを使用して通信を暗号化できます(これを行うには、ASMXで使用する必要があります[〜#〜] wse [〜#〜]- Web Services Enhancements)、大きなファイルを安全に送信できます(これを行うには、ASMXで使用する必要があります[〜#〜] mtom [〜#〜]-メッセージ送信最適化メカニズム)。

コードの1行を変更するだけで送信の設定を行うことができ、セキュリティははるかに高くなります。

これでより一般的な概要が得られることを願っていますが、もっとたくさんあります。

要点:保護する必要のないWebサービスを公開するには、ASMXを使用できますが、まったく問題ありませんが、何らかの方法で通信を保護する必要がある場合は、WCFで実行してください。

link2つのサービス間のパフォーマンスの比較をここで読むことができます

28
balexandre

これらは、サービスを作成するための2つの異なるフレームワークです。 WCFは一般に柔軟性が高く、使用するプロトコル、サービスのホスト方法、およびさまざまなセキュリティオプションに対して構成可能なオプションを提供します。 ASMXは、SOAPベースのサービスを提供します。一般に、WCFもより優れています performant 。一般的に、ASMXは使いやすく、一般的に学習曲線が少なくなっています。

ここ は、このトピックに関するMSDNフォーラムのディスカッションです。 [〜#〜] asmx [〜#〜] および [〜#〜] wcf [〜#〜] の開始ページを以下に示します。

9
smaclell

上記の応答に加えて、.NET 3.0以降の.NET Remotingに代わるWCFが作成されました。 SOAP、REST、POXなどのさまざまな形式のWebサービス(XMLやJSONなど)に加えて、WCFはMSMQと名前付きパイプも提供しています。前述のように、ASMXはSOAPベースのXML Webサービスのみを提供します。

他のタイプの通信プロトコルについては 。NET Remoting について詳しく調べる必要があります。追加情報については、チェックアウトする必要があります Pro C#2008および.NET 3.5 Framework 。これは優れたリソースであり、.NET Remotingやその他の置き換えられた機能を扱った以前の本の章を入手できます。

7
user29439

ここに新しく大きな違いがあります。Microsoftは現在、ASMX Webサービスを「レガシー」テクノロジーと見なしています。 「 ASP.NETおよびXML Webサービスクライアントを使用して作成されたXML Webサービス 」を参照してください。

4
John Saunders

ウェブサービス

  1. HTTP経由でのみアクセスできます
  2. ステートレス環境で動作します

WCF

WCFは、そのサービスをさまざまな種類のアプリケーションでホストできるため、柔軟性があります。以下に、WCFサービスをホストするためのいくつかの一般的なシナリオを示します。

  • IIS
  • だった
  • セルフホスティング
  • マネージドWindowsサービス
2
kanagu

それらはすべて2つの異なるものです。 WCFは、1つのサービスタイプのコンポーネントを記述し、それを(Asp.Net Webサービスとしても)さまざまな方法で展開できる、より一般的なフレームワークです。

これに関する簡単なスレッドです http://social.msdn.Microsoft.com/Forums/en-US/wcf/thread/2d6a7ff2-f15c-4599-a389-a81cfffcc852/

1
Vaibhav

私も同じ問題を抱えていました。

私は本 Microsoft Windows Communication Foundationステップバイステップ が本当に良いと感じました。

justがWCFを使用して従来のWebサービスを実行したい場合、その本の第1章では、その方法(サービスの作成、テスト)を正確に示します、デプロイ、サービスを使用)。

それはVS2005用に書かれていますが、私はvs2008を使用しており、さらに簡単であることがわかりました。

WCFにはさらに多くの機能がありますが、その本は良い出発点です。

1
Christian Payne

WebサービスとWCFの主な違いを以下に示します。

Webサービス:Webサービスは、インターネットを介して他のアプリケーションと直接対話するように設計されたアプリケーションです。

1)[WebService]および[WebMethod]属性は、Webサービスおよびメソッドを定義します。
2)HTTP経由でのみアクセスできます。
3)IISでホストされています。
4)サポートセキュリティサービス。
5)マルチスレッドにすることはできません。
6)使用される石鹸または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サポート

1
DOTNET Team