WCFとASMX Webサービスの違いは何ですか?


375

WCFとASMX Webサービスの間で完全に混乱しています。私は以前の段階で多くのWebサービスを使用してきましたが、WCFと呼ばれるこの新しいものが導入されました。Webサービスとして機能するWCFを作成できます。WCFにはもっと多くのものがあると思います。

WCFとWebサービスの違いは何ですか?それぞれいつ使用する必要がありますか?


5
これが推奨質問である方法はありません。ASMXもWCFも製品ではありません。これらは、Microsoftスタック内のWebサービスの2つの反復です。問題は違いは何ですか、そして新しいものを学ぶのは私の価値があるのですか?「私はTelerikのコントロールやインフラジスティックスを使用する必要があり、これは同じものではありません。
ジョン・サンダース

回答:


391

Keith ElderはASMXとWCFをうまく比較しています。見てみな。

ASMXとWCFのもう1つの比較をここに示します -私はそこにあるすべての点に100%同意するわけではありませんが、それはあなたにアイデアを与えるかもしれません。

WCFは基本的に「ステレオイド上のASMX」です-ASMXができることのすべてである可能性があります-さらにもっと!

ASMXは次のとおりです。

  • 作成と設定が簡単でシンプル
  • IISでのみ利用可能
  • HTTPからのみ呼び出し可能

WCFは次のいずれかです。

  • IIS、Windowsサービス、Winformsアプリケーション、コンソールアプリでホスト-完全に自由
  • HTTP(RESTおよびSOAP)、TCP / IP、MSMQ、その他多数のプロトコルで使用

つまり、WCFはASMXを完全に置き換えるものです。

MSDNのWCF Developer Centerを確認してください。

更新:リンクが停止しているようです-これを試してください:Windows Communication Foundationとは何ですか?


15
Visual Studio 2010 .net 4.0を使用すると、WCFはASMXと同じくらい簡単に記述でき、ASMXを記述するための言い訳はもうありません。WCFは、はるかに高速で、より柔軟で、より安全です。ASMXはレガシーであり、だれもまだピリオドを記述すべきではありません。
トムスティッケル2012年

13
「ほとんどの開発者は、ASMXにはIISが必要であると誤って想定しています。結局のところ、これは今まで見た中で唯一のユースケースです。しかし、ASMXがIISに技術的に依存することはまったくありません。」msdn.microsoft.com/en-us/magazine/cc163879.aspx
MrNick

2
@MrNick:そうです。IISはありませんが、HTTPのみです。ASMXをホストするためのコードとWCFサービスをホストするためのコードを比較してください。
John Saunders 2013

1
残念ながらkeithelder.net/2008/10/17/wcf-vs-asmx-webservicesのリンクは壊れています。
Robert

2
@codemonkeyliketab:応答は6歳以上です -インターネット時代の光年です!私はWCFデベロッパーセンターの代わりを見つけようとしました-私の更新を参照してください
marc_s '12年

37

ASMX Webサービスは、HTTP(.asmxを使用する従来のWebサービス)によってのみ呼び出すことができます。WCFサービスまたはWCFコンポーネントは、任意のプロトコル(http、tcpなど)および任意のトランスポートタイプで呼び出すことができます。

次に、ASMX Webサービスは柔軟性がありません。ただし、WCFサービスは柔軟です。サービスの新しいバージョンを作成する場合は、新しいエンドを公開する必要があります。したがって、サービスは俊敏であり、これは現在のビジネストレンドを調べる非常に実用的なアプローチです。

WCFは、コントラクト、インターフェイス、操作、およびデータコントラクトとして開発されます。開発者として、私たちはビジネスロジックサービスにより集中しており、チャネルスタックについて心配する必要はありません。WCFはあらゆる種類のサービスの統合プログラミングAPIであるため、サービスを作成し、構成情報を使用してHTTP / TCP / MSMQなどの通信メカニズムをセットアップします


11
多分それは私だけかもしれませんが、パラグラフ#2と#3はマーケティングBSとして際立っています。
Neolisk

@Net Experts uは、「サービスの新しいバージョンを作成する場合は、新しいエンドを公開するだけでよい」と言っています。
Mou 2016年

@Mou、彼はendpoint私が推測する新しいものを公開することを意味しました。いいね<endpoint address="http://api.microsofttranslator.com/V1/soap.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_LanguageService1" contract="TranslatorService.LanguageService" name="BasicHttpBinding_LanguageService3" />
AlexMelw

25

これは非常に古い質問ですが、ASMXの利点がかなり描かれているとは思いません。ASMX Webサービスは、それほど柔軟ではありませんが、使用と理解が非常に簡単です。WCFはより柔軟ですが、立ち上がって構成するのも複雑です。

ASMX Webサービスは、ファイルを追加するとすぐに立ち上がってWebサービス参照として追加する準備ができています。(プロジェクトのビルドを想定)

create webservice-> run webservice-> の単純な開発ワークフローの add webservice reference場合、ASMX Webサービスには、問題が発生する可能性はほとんどありませんが、誤って構成できるほどではありません。それが強みです。

ASMXがWCFに置き換わると主張する人たちに応えて、WCFはASMXを完全に置き換えるために、合理化されたKISS構成モードを追加する必要があると答えます。

ASMX Webサービスのweb.configの例:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings />
  <system.web>
    <compilation targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>
</configuration>

私はasmx webservicesを使用して実行できる作業にWCFがより多くの構成を必要としないと思います。クライアント側でWCFサービスの参照を追加することもできます。WCFはasmxよりもはるかに強力で、asmxが実行できることし、asmxと同じくらい簡単になります
Coder1409

9
@ Coder1409いくつかの設定が必要なため、それは確かにより多くの設定です。バインディング、検出可能性など。asmxでは不要です。サービス契約、運用契約、データ契約、データメンバー。asmxでは必要ありません。もちろんこれらのことは、wcfが優れていてより強力な理由ですが、複雑さを増すことを否定するのは正直ではありません。欠点はないと言っているところです。
Andrew Hoffman

7
最初(2回目、3回目...)にwcfを作成したとき、必要な構成を把握するのに年齢がかかりました。「なぜそれをする必要があるのですか?」私は自分自身に尋ね続けました。「なぜそんなに複雑なことに悩むのですか?」asmxはすぐに動作しました。だから、それが同じくらい単純だと言っても、真実ではありません。いつか私は完全に理解して私の見方を変えます-その日までGRRRR !!!
tomjm

1
@tomjmもう一度、最新バージョンのVisual Studioと.NETで試してください。特に、構成システムはデフォルトの追加設定に変更されました。特に、機能のない単純なWebサービス(httpのみ)を取得するために、URLを指定する以上のことはほとんど必要ありません。
John Saunders

1
@tomjmそうですね。正直なところ、これまでは非常に多くの構成でしたので、wcf構成マネージャーアプリを使用するのが理にかなっています。それなら何でもできます!(すぐに使えるデフォルト設定がある場合を除きます)ただし、最近では、WEBサービスについてより簡単に考えています。Wcfは依然として高度なサービスに最適ですが、おそらくサービス開発の大部分はWebサービス開発であり、Webサービス開発im​​oのwebapi2に勝るものはありません。
Andrew Hoffman

10

WCFはASMX Webサービスを完全に置き換えます。ASMXはWebサービスを行うための古い方法であり、WCFはWebサービスを行うための現在の方法です。クライアントまたはサーバーでのすべての新しいSOAP Webサービス開発は、WCFを使用して行う必要があります。


32
問題は、ASMXは単純なモデル(非常に柔軟ではない)でしたが、単純なモデル(使いやすく、最も一般的なWebサービスのニーズを理解する)でした。WCFはさらに多くの複雑さを追加します。MSはASMXをWCFに置き換えることを望んでいますが、MSが最も一般的なシナリオを古い[Webメソッド]の方法と同じくらい簡単にするまでは、多少の抵抗があるようです。
mattmc3 2010年

6
WCFはまったく複雑ではありません。両方で単純な「hello world」Webサービスを作成し、それぞれにどれだけのコードを記述しているかを確認します。答え:どちらでもそれほど多くはなく、WCFでもわずかです。そして、ところで、ASMXは既にWCFに置き換えられいます。取引完了。
John Saunders、

58
「WCFはまったく複雑ではない」Ha。私のやり方で、web.configを誇張して教えてください。
mattmc3

26
(反対投票ではありませんが、理由を説明します)-「これは新しく、古い」というのは、誰もが気にする必要のある大きな違いではないからです。私たちはそれらが何歳であるかだけに基づいてツールを選択することはありません-ハンマーは本当に、本当に古いですが、それでもほとんどの場合、釘を打つための最良のツールです。だから、あなたは有効な答えを出しました、それはそれだけでは役に立ちません-古い「飛行機の中にいる」冗談のように。
ジャスミン

5
反対票-参照なし。この情報をどのようにして知っていますか?ご意見ですか?マイクロソフトで働いていますか?参照を追加し、私は賛成票を投じます。
tomjm 2015年

7

WCFを介したasmx Webサービスのシンプルさについては、多くの話し合いが行われています。ここでいくつかのポイントを明確にしましょう。

  • 初心者のWebサービス開発者がasmx Webサービスで簡単に開始できることは事実です。Visual Studioはすべての作業を行い、Hello Worldプロジェクトを簡単に作成します。
  • しかし、WCFを学ぶことができれば(もちろん、それほど時間はかかりません)、WCFも非常に単純であり、簡単に先に進むことができます。
  • これらのWCFの複雑さは、実際には、WCFがもたらす美しい機能に起因していることを覚えておくことが重要です。構成ファイルには、アドレッシング、バインディング、コントラクト、エンドポイント、サービス、クライアントがすべて記載されています。美しさは、ビジネスロジックが分離され、安全に維持されることです。バインディングをbasicHttpBindingからnetTcpBindingに変更する必要がある場合は明日ファイルでバインディングを簡単に作成して使用できます。したがって、クライアント、通信チャネル、バインディングなどに関連するすべての変更は、ビジネスロジックを安全かつ完全な状態にして構成で行う必要があります。
  • WCFの「Webサービス」は、WCFを介して有効化されたはるかに広い範囲のリモート通信の一部です。WCFは、Microsoftが提供するさまざまな分散プログラミングインフラストラクチャをすべて要約するように一から設計されているため、従来のASMXを使用する場合よりも、WCFでの作業の方がはるかに高い柔軟性と移植性が得られます。WCFのエンドポイントは、TCP /バイナリを介してできるのと同じくらい簡単にSOAP / XMLを介して通信でき、このメディアを変更するには、構成ファイルのmodを変更するだけです。理論的には、これにより、ビジネスニーズやターゲットなどを移植または変更するときに必要な新しいコードの量が減ります。
  • WebサービスはHTTPを介してのみアクセスでき、WCFはさまざまなタイプのアプリケーションでホストできるため、WCFが柔軟なステートレス環境で機能します。WCFサービスは、コンソール、Windowsサービス、IIS、WASでホストできます。これらもVisual Studioで新しいプロジェクトを作成するためのさまざまな方法です。
  • ASMXはWCFよりも古く、WCF(およびそれ以上)もASMXで実行できることは何でも可能です。基本的に、WCFは、Microsoftの世界で2つのアプリが通信するためのさまざまな方法をすべて論理的にグループ化しようとしていると見なすことができます。ASMXは、これらの多くの方法の1つにすぎなかったため、WCF機能の傘下にグループ化されています。
  • Visual Studio for NET 4.0または4.5を使用すると、WCFサービスの作成が簡単になり、常に使いやすくなります。
  • 主な違いは、WebサービスがXmlSerializerを使用することです。ただし、WCFはXmlSerializerと比較してパフォーマンスが優れているDataContractSerializerを使用します。これが、WCFがasmxや.NETリモート処理などの.NETの他の通信技術よりも優れたパフォーマンスを発揮する理由です。

私がWCFよりもasmxサービスが好きだった人の1人であることを忘れないでください。しかし、そのときは、WCFサービスとその機能についてはよく知りませんでした。WCF構成が怖い。しかし、私は敢えて自分自身のWCFサービスをいくつか作成しようとしました。WCFについてさらに学ぶと、WCFについて何の制約もなく、だれでもそしてすべての人にそれをお勧めします。ハッピーコーディング!!!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.