WebサービスとWCFサービス


回答:


67

この回答は存在しない記事に基づいています:

記事の要約:

「基本的に、WCFはさまざまな通信メカニズムを使用して通信できるアプリケーションを構築できるサービスレイヤーです。これにより、ピアツーピア、名前付きパイプ、Webサービスなどを使用して通信できます。

WCFは相互運用可能なアプリケーションを構築するためのフレームワークであるため、それらを比較することはできません。必要に応じて、SOAイネーブラーと考えることができます。これは何を意味するのでしょうか?

WCFはABCと呼ばれるものに準拠しています。Aは通信するサービスのアドレス、Bはバインディング、Cはコントラクトを表します。必ずしもコードを変更せずにバインディングを変更できるため、これは重要です。契約と実装の分離を強制するため、契約ははるかに強力です。これは、コントラクトがインターフェイスで定義されており、コントラクトの同じアイデアを使用してコンシューマがバインドする具体的な実装があることを意味します。データモデルは抽象化されています。」

...後で...

「Webサービスではなく、他の通信技術(ピアツーピア、名前付きパイプなど)と通信する必要がある場合は、WCFを使用する必要があります。」


2
SOAアプローチに基づく新しいプロジェクトの場合、開発者はWebサービスではなくWCFを選択する必要があります。将来使用するための柔軟性とスケーラビリティを提供するためです。唯一の例外があります。クライアントがwcfサービス、つまりFlash AS2との通信をサポートしていない場合です。
Lalit

WCF 1)多層アーキテクチャ2)さまざまなネットワークプロトコルを使用して通信するサービス指向アプリケーションを構築するための単一の統合プラットフォーム(相互運用可能)またはフレームワークを提供します。3)WCFは、WebサービスまたはASMXサービスと比較して、より優れたセキュリティと信頼性を提供します。4)プレーンXML、Ajax、およびREST Webサービスのサポート1)シンプルです。サービスを提供する準備ができて
Arun Banik 14

Joeから回答したように->記事はcodeproject.com/Articles/139787/…で
Bernhard

33

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

WCFは、Microsoftの以前のすべてのWebサービステクノロジーに代わるものです。また、従来「Webサービス」と見なされていたものよりもはるかに多くのことを行います。

WCFの「Webサービス」は、WCFを介して可能になるはるかに広い範囲のリモート通信の一部です。WCFは、Microsoftが提供するさまざまな分散プログラミングインフラストラクチャをすべて要約するように一から設計されているため、従来のASMXを使用する場合よりも、WCFで物事を行う際の柔軟性と移植性が大幅に向上します。WCFのエンドポイントは、TCP /バイナリを介して行うのと同じくらい簡単にSOAP / XMLを介して通信できます。このメディアを変更するには、構成ファイルのmodを変更するだけです。理論的には、これにより、ビジネスニーズやターゲットなどを移植または変更するときに必要な新しいコードの量が減ります。

ASMXはWCFよりも古く、WCF(およびそれ以上)でASMXが実行できることは何でも可能です。基本的に、WCFは、Microsoftの世界で2つのアプリが通信するためのさまざまな方法をすべて論理的にグループ化しようとしていると見なすことができます。ASMXは、これらの多くの方法の1つにすぎなかったため、WCFの機能の傘下にグループ化されています。

WebサービスはHTTP経由でのみアクセスでき、WCFはさまざまな種類のアプリケーションでホストできるため、WCFが柔軟なステートレス環境で機能します。WCFサービスをホストするための一般的なシナリオは、IIS、WAS、セルフホスティング、マネージWindowsサービスです。

主な違いは、Webサービスの使用XmlSerializerです。しかし、WCFはとDataContractSerializer比較してパフォーマンスが優れていXmlSerializerます。


2
ランダムな注:DataContractSerializerとXmlSerializerの大きな違いは、DCS フィールドの順序付けを必要とすることです。これが、非一時的なシリアル化またはコントラクトにDCSを使用しない理由です。したがって、DCSに移動するときに(またはDCSに移動するが以前に使用された順序とは異なる順序で)、固定順序を使用していないクライアントが使用するサービスを中断することができます。確かに、これはスキーマで表現する必要がありますが、..
user2246674 2013

1
また、出典を引用/リンクし、抜粋を示したり、元の情報を取得して、新しい情報を書き込んだりしてください。盗むのは失礼です。私はあなたのためにリンクを追加しましたが、それが期日である場所を信用してください!(もし私がこの投票に反対票を投じることができれば、私はこれに基づいて反対票を投じます。)
user2246674 2013

32

Webサービス はSOAPに基づいており、データをXML形式で返します。HTTPプロトコルのみをサポートします。オープンソースではありませんが、xmlを理解しているクライアントであれば利用できます。IISでのみホストできます。

WCF はSOAPにも基づいており、データをXML形式で返します。これはWebサービス(ASMX)の進化であり、TCP、HTTP、HTTPS、名前付きパイプ、MSMQなどのさまざまなプロトコルをサポートしています。WCFの主な問題は、その面倒で広範囲にわたる構成です。オープンソースではありませんが、xmlを理解しているクライアントであれば利用できます。アプリケーションで、またはIISで、またはウィンドウサービスを使用してホストできます。


WCFは、SOAP /スキーマを使用せずに、JSON形式でhttp要求/応答を受信/送信することもできます(現在は?)。
Efrain 2016年

詳細なポイント:SOAPはHTTPSをサポートしています。エンコードはトランスポート層で行われるため、クライアントはトランスポート層に依存しません。クライアントはXML要求を行い、XML応答を取得します。また、途中でそれがplain-ol-httpであったか、encrypted-httpsであったかを知りませんし、気にしません。
Jinlye

16

基本的および主な違いは、ASP.NET WebサービスはSOAPメッセージをHTTPでのみ交換するように設計されているのに対し、WCFサービスは任意のトランスポートプロトコル(HTTP、TCP、MSMQ、またはNamedPipesなど)で任意の形式(SOAPがデフォルト)を使用してメッセージを交換できることです。


4

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

  1. Webサービスは、1つのアプリケーションから別のアプリケーションにデータを転送するときに、HTTPプロトコルのみを使用します。

    ただし、WCFは、ASP.NET Webサービスよりも多くのメッセージ転送プロトコルをサポートしています。WCFは、HTTPのほか、伝送制御プロトコル(TCP)、名前付きパイプ、およびMicrosoftメッセージキュー(MSMQ)を使用したメッセージの送信をサポートしています。

  2. 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;
      }
    }
  3. Webサービスは、アーキテクチャ的に堅牢ではありません。しかし、WCFは構造的により堅牢であり、ベストプラクティスを促進します。

  4. WebサービスはXmlSerializerを使用しますが、WCFはDataContractSerializerを使用します。XmlSerializerと比較してどちらがパフォーマンスが優れていますか?

  5. 内部(ファイアウォールの背後)のサービス間呼び出しには、SOAPよりもはるかに高速なnet:tcpバインディングを使用します。

    WCFは、ASP.NET Webサービスよりも25%〜50%高速で、.NET Remotingよりも約25%高速です。

どちらを選ぶのですか?

  • WCFは、他のプラットフォームで開発され、他のテクノロジを使用する他のアプリケーション間の通信に使用されます。

    たとえば、.netプラットフォームから他のOS(UnixやLinuxなど)で実行されている他のアプリケーションにデータを転送する必要があり、他の転送プロトコル(WASやTCPなど)を使用している場合、データの転送のみが可能です。 WCFを使用します。

  • ここでは、プラットフォーム、アプリケーションの転送プロトコルの制限はありませんが、1つのアプリケーションから別のアプリケーションにデータを転送します。

  • Webサービスと比較してセキュリティが非常に高い


2

主な違いはタイムアウトです。WCFサービスは応答がないときにタイムアウトしましたが、Webサービスにはこのプロパティがありません。

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