WebAPI は SOAP をサポートしていますか? MVC4 で SOAP サーバーを作成しようとしていますが、WCF でそれを行うことができますが、WebAPI がこれを置き換えているようですが、これで SOAP を利用する方法はまだありません。REST スタイル インターフェイスを使用する JSON/XML だけです。
6 に答える
Scott Guthrie の言葉を引用すると、ここ数年で Web API が台頭してきました。これは、より正式なサービス コントラクト (SOAP や WS* など) ではなく、プレーンな HTTP を介して公開されるサービスです。
だから私はノーと言うでしょう。
同じサービスで REST + SOAP API をサポートできるようにするServiceStackを検討する必要がありますが、SOAP はHTTP POST でのみ機能するため、いくつかの制限があります。
ServiceStack 参照を追加
SOAP の代替として、 ServiceStack は、 ServiceStackVS に組み込まれている Add ServiceStack Reference 機能を使用して URL から型指定された API を生成できる、WCF の Add Service Reference のより優れた代替手段を提供します。
WCF に対する利点
- シンプル小さな T4 テンプレートを使用して、生成された POCO タイプを保存します。T4 テンプレートを再実行するのと同じくらい簡単に更新
- 多彩なクリーン DTO は、すべての JSON、XML、JSV、MsgPack、および ProtoBuf汎用サービス クライアントで動作します
- 再利用可能な生成された DTO は、どのエンドポイントやフォーマットにも関連付けられていません。デフォルトは、再利用を最大限にするために部分的かつ仮想的です
- Resilient Messaging ベースのサービスには、RPC サービスよりも多くの利点があります。
- 柔軟なDTO 生成はカスタマイズ可能で、サーバーとクライアントは組み込みのデフォルトをオーバーライドできます
- DTO に注釈が付けられた統合リッチ サービス メタデータ。外部からアクセスされた場合、内部サービスは除外されます。
WebAPI と WCF はどちらも RPC メソッド シグネチャを促進します
興味深いのは、WebAPI の ApiController メソッドが WCF と同じRPC アプローチを採用し、C# RPC メソッドを使用してチャット Web サービスを作成および定義しているにもかかわらず、同じ会社によって作成された独自の SOAP 標準をサポートできないことです。
ServiceStack は、同じサービスで REST、SOAP、HTML、および MQ エンドポイントをサポートします
これは、同じサービスが REST、SOAP、MQ エンドポイントを含む複数のエンドポイントとフォーマットをサポートできることに加えて、サーバー側またはクライアント側の HTML Web サイトを生成できるにもかかわらず、多くの利点を提供する ServiceStack のメッセージベースの設計の証です。それが必要。これは、ServiceStack で構築されているため、リッチ ネイティブ デスクトップ クライアント、モバイル アプリ、およびシングル ページ アプリで呼び出すことができる型指定された REST API を自動的に有効にするリッチなNorthwind データベース エディターの例です。
SOAP は依然としてリモート サービスの選択肢としては不十分です
相互運用性、アクセシビリティ、および下位互換性の理由から SOAP をサポートしていますが、Web サービス プラットフォームの構築には SOAP を使用することはお勧めしません。これは、必要以上に複雑で、壊れやすく、遅くて冗長であり、より優れた代替手段があるためです。InfoQ のインタビューで詳しく説明しています。
WEB API は、REST ベースの API に対する Microsoft の回答です。SOAP が必要な場合は、WCF を使用してください。
手間をかけずに1つのインターフェースでSOAPとRESTの両方をサポートする必要があるServiceStackを確認することをお勧めします。これは、WebサービスのWebAPIよりも優れていると主張しています。
違いについてすべてを知っているとは言えませんが、彼らが主張する問題は、経験から言えるWeb APIアプローチに固有のものです。APIの進化(実際のプロジェクトでは避けられない)は、WebAPIではかなり注意が必要です。そしてもちろん、WebAPIはSOAPをサポートしていません。