私は2つのWebサイト(www.mysite1.comとmyweb2.com、どちらのサイトもASP.NETのバックエンドとしてSQLサーバーを使用しています)を持っていて、あるサイトのデータをanother.Nowに渡したいWebサービスやフォームの投稿(myweb1からmyweb2のページへ)を使用するかどうか混乱しますWebサービスとフォームの投稿
両方の長所と短所を教えてください。
私は2つのWebサイト(www.mysite1.comとmyweb2.com、どちらのサイトもASP.NETのバックエンドとしてSQLサーバーを使用しています)を持っていて、あるサイトのデータをanother.Nowに渡したいWebサービスやフォームの投稿(myweb1からmyweb2のページへ)を使用するかどうか混乱しますWebサービスとフォームの投稿
両方の長所と短所を教えてください。
ウェブサービスはSOAP messagesです(SOAPプロトコルはXMLを使用してメッセージを前後に渡します)。したがって、両端のサーバーはSOAPを理解する必要があります。 WMDLファイルをgrokできるようになりました(利用可能なさまざまなサービスエンドポイントとリモート機能を説明しています)。通常は、SOAP/WS- *スタックと呼ばれ、利用可能なソフトウェアがいくつか存在し、SOAP呼び出しが複雑になればなるほど、このスタックを利用できるようにする必要があります。 。
POSTの使用は、ほとんどの場合、RESTful behavioursに関連付けられています。そのようなプロトコルの例として、HTTPを参照してください。POSTの中で複雑なXMLを投稿することもできますが、単純なPOSTを使用して呼び出しを簡略化し、回答としてHTTP responsesを使用する傾向があります。すべてのWebキットでHTTPサポートが得られていない場合は、おそらくほとんどの場合、余分なソフトウェアは必要ありません。私の偏見はあなたが不思議に思っている場合に備えて、RESTに向かって傾く。 HATEOASを使うことで、SOAPのやり方ではなく、リアルタイムで負荷や可用性を持って自分自身を変更できる自己認識システムのための本当に良いインフラストラクチャを作成することができます。これはの itの中心にあります。 HTTPは、パフォーマンスと安定性を考慮して、大規模な分散ネットワークを考慮して設計されています。 SOAPは、あなたがちょっとしたものを詰め込んだ場合、ワンストップになる傾向があります。私のブログには、特にthe architecture sideとimpact of SOA vs. ROAと書かれています:)
私は「もっと良い」という大きな議論があり、あなたがしたいこと、好きなやり方、自分が必要とするもの、環境、経験、太陽と月の位置、そして私の猫がいる気分に完全に依存します。 "ええ、意味があります。
私はこれに関する健全な議論のためにすべてですが、私はSOAPが改革だと考える傾向があります。 SOAPはヘッダーとボディーを持つエンベロープで、使い慣れていると思われる場合は、HTMLがどのように設計されたかということです。 HTTPは、物事を移動するための単なるプロトコルとしてよく理解され、非常にうまくサポートされており、SOAPはそれを使ってXMLエンベロープをシフトします。 SOAPとHTMLの移行には本当の違いがありますか?さて、大きな違いは、SOAPはHTTP(キャッシング、アドレス指定可能、状態、スケーリング)のすべてのニセティを再発明し、メッセージを配信するためだけにHTTPを使用し、スタック自体が上記の優しさに対処しなければならないという点です早くだから、HTTPの良さの多くは無視され、別のレイヤーで再作成されます(それに対処するにはSOAPスタックが必要です)。これは私にとっては無駄で、無知に思え、複雑さを増しています。
次はあなたがしたいことです。実際に複雑なものについては、Webサービスのスタックにはたくさんの標準があります(私はそれが1200ページにおよぶと思います)。これはあなたを助けるかもしれませんが、あなたのニーズがもっと控えめなものであれば(すなわち、ではありません。は、例えば、リクエストのシンプルなPOST(またはGET)と、結果を伴うエンベロープバックが十分に良いかもしれません。 HTTPの結果は、あなたが知っているようにHTTPのコンテンツタイプなので、すでにたくさんサポートされていますが、application/xml + myformat(正確にはapplication/x-xml + myformatなど) )。レスポンスコード200の場合はリクエストを取得し、解析します。
どちらも機能します。 1つは重いです(WS- *スタック)。あなたのニーズに応じて、もう1つは軽量で既にサポートされています。彼らの言うとおり、残りは接着剤です。
私の小さな経験から、あなたがコードを受信した時点でコードを作成すると、そのサービスのメソッドと構造を見ることができるので、Webサービスを使うのが一番良いと言えます。
また、フォーム投稿メトスを使用すると、Webサービスコールのように整形式ではないフォーム提出を偽造する必要があります。
第3の方法は、データベースを話すことですが、私はそれらが異種であると推測しており、お互いを見ることはできません。
Webサービスとは、SOAPベースのWebサービスを意味しますか?
いずれにしても、両方ともほとんど利点がありません。投稿はより軽量ですが、SOAPは標準化されています。 SOAPは単純なタスクではあまりにも多くのオーバーヘッドがあり、多くの利点を与えないと思うので、私はもっと安らかなアプローチをとるだろう。
私はwebserviceが間違いなく最良の選択だと言います。いくつかのプロの:
です。デザインタイムサポート/コード補完のように。
私はWebサービス(またはWCF)を提案します。 Beanieが言っているように、サービスでは、(あなたが公開している)サービスのメソッドとタイプを見ることができます。これにより、データの移動がはるかに簡単できれいになります。
AlexanderJohannesenは、SOAP WebservicesまたはRESTful apisが優れているかどうかは議論の余地がありますが、両方のサイトがあなたの管理下にあり、asp.netを使用している場合は、確実にSOAP Webservicesを使用します。 Visual StudioがWebサービスを作成して使用するために提供するツールはすばらしく、2つのサイト間のリンクを作成するのに数分以上かかることはありません。
コミュニケーションを受けたいサイトで、VS内のアイテムの追加を選択してWebサービスを作成します。 Webサービスを選択し、適切に名前を付けます。次に、実装するロジックを持つメソッドを作成し、属性[WebMethod]を追加します。
[WebMethod] public void AddComment(int UserId, string Comment) { // do stuff }
これをテストサーバー、たとえばtst.myweb2.comに配置します。
消費側(www.myweb1.com)で、[Web参照の追加]を選択し、作成したWebサービスのアドレスにURLをポイントし、名前を付けて[参照を追加]をクリックします。あなたはローカルクラスのように呼び出すことができるプロキシクラスを持っています。やさしい。
フォーム提出を偽造する必要はありません。フォーム提出は単なるポストメソッドです。 .NETでは、HTTPWebRequestクラス(http://www.netomatix.com/httppostdata.aspx)を使用してPOSTメソッドとGETメソッドを送信することも同様に簡単です –
申し訳ありませんが、私はそこには入院していませんでした。私は、SOAPを使用する場合、定義されたパラメータを持つ素敵なメソッドを持つよりも、送信するポストデータを構築する必要があると言っていました。 – Beanie