web-dev-qa-db-ja.com

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

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

WCFとWebサービスの違いは何ですか?それぞれをいつ使うべきですか?

367
shailesh

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

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

WCFは基本的に「ASMX on stereoids」です - ASMXができることはすべてそうです - プラス もっとたくさんあります!

ASMXは以下のとおりです。

  • 作成および設定が簡単で簡単
  • iISでのみ利用可能
  • hTTPからのみ呼び出し可能

WCFは次のようになります。

  • iIS、Windowsサービス、Winformsアプリケーション、コンソールアプリケーションでホストされています - あなたは完全な自由を持っています
  • hTTP(RESTおよびSOAP)、TCP/IP、MSMQ、その他多くのプロトコルで使用されます。

一言で言えば、WCFはASMXを完全に置き換えるものです。

MSDNの WCFデベロッパーセンターをチェックしてください

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

384
marc_s

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

次に、ASMX Webサービスは柔軟ではありません。ただし、WCFサービスは柔軟性があります。あなたがサービスの新しいバージョンを作るなら、あなたはちょうど新しい目的を明らかにする必要があります。したがって、サービスはアジャイルであり、これは現在のビジネストレンドを見ると非常に実用的なアプローチです。

WCFは、契約、インターフェース、運用、およびデータの契約として開発しています。開発者として私たちはビジネスロジックサービスにもっと焦点を当てており、チャンネルスタックについて心配する必要はありません。 WCFはあらゆる種類のサービスのための統一されたプログラミングAPIですので、私たちはサービスを作成し、HTTP/TCP/MSMQなどのような通信メカニズムを設定するために設定情報を使用します

37
NET Experts

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

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

create webservice - > run webservice - > add webservice referenceという単純な開発ワークフローでは、ASMX Webサービスには失敗する可能性が非常に少なく、誤って設定する可能性はほとんどなく、それが強みです。

WCFがASMXに取って代わると主張する人々への応答として、私はWCFが合理化されたK.I.S.Sを追加する必要があるだろうと答えます。 ASMXを完全に置き換えるためのコンフィギュレーションモード.

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>
23
Andrew Hoffman

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

11
John Saunders

WCF上のasmx Webサービスの単純さに関しては、たくさんの話が続いています。ここでいくつかの点を明確にしましょう。

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

私がWCFよりもasmxサービスを好む人の一人であったことを忘れないでください、その当時私はWCFサービスとその機能についてよく知らなかったです。私はWCFの設定が怖かったです。しかし、私はあえて自分でWCFサービスを作成しようとしましたが、WCFの詳細を学んだときには、今ではWCFを妨げるものはなく、誰にでもお勧めします。ハッピーコーディング!

5
Sagnik Majumder