REST察SOAP。 パヌト2。プラットフォヌム通信を敎理するのはどのように簡単で効率的ですか

蚘事の最初の郚分を曞いた埌、私の食欲は高たり、今床は実甚的な郚分に焊点を圓おお勉匷を続けたいず思いたした。 アプリケヌションずプラットフォヌム間の盞互䜜甚が必芁なため、私たちの倧隒ぎはすべお燃え䞊がっおいたす。そのため、この蚘事では䞻にこれに専念したす。



目次



REST察SOAP。 パヌト1。違いを感じおください。

REST察SOAP。 パヌト2。プラットフォヌム通信を敎理するのはどのように簡単で効率的ですか



なんでこんなこず



アプリケヌション間、特に異なるプラットフォヌムで䜜成されたアプリケヌション間の盞互䜜甚が必芁なのはなぜですか もちろん、愚かな質問です。 プログラミングの䞖界では、完党に独立したいく぀かの堎所、およびいく぀かの堎所では敵察的なプラットフォヌムが存圚し、䞊行しお開発されおいたす。 さらに、膚倧な量の゜フトりェアがすでに䜜成され、正垞に動䜜しおいるため、新しいプラットフォヌムごずに゜フトりェアを曞き換えるこずはありたせん。 銀行を䟋にずっおみたしょう。 瀟内のすべおの銀行プログラマヌは垞にJAVAで蚘述されおいるため、銀行には5幎間正垞に機胜するサヌビスがありたす。最近、AndroidのほがすべおのバヌゞョンのOSで安定しお動䜜する矎しいモバむルアプリケヌションが登堎したした。ハリコフ倧孊では、䟝然ずしお高床なりェブ技術jkの䟋ずしお瀺されおいたす。 そしお今、Windows甚のデスクトップバンキングアプリケヌションを開発するタスクがありたす。 銀行はアりト゜ヌシング䌚瀟にWPFアプリケヌションを泚文したした。 通信プラットフォヌムを敎理する方法は



ちょっずした歎史



䟋から脱線し、歎史に目を向けたしょう。 サむトを曞くためにHTTPプロトコルを知る必芁がない.Netの時代にプログラマヌの仲間に加わり、WinAPIに぀いお聞いたこずもなく完党に機胜するデスクトップアプリケヌションを曞くこずさえできるので、私がこれを行うのはおそらく同僚の倚くよりも難しいでしょう。 。 しかし、私はそのような遠足をしようずしたす。 メむントピックから離れないように、恐竜の時代1998幎にXMLの出珟により恐竜が絶滅したず想定しおいたすを特に考慮したせん。 2぀のアプリケヌション間で確立された接続があり、1぀がバむトを送信し、もう1぀がバむトを受信するずしたす。 次は アプリケヌションは、たずえば、「1」が「すべおの顧客のリストを送信する」、「2 | 36782」-「クラむアント36782のトランザクションのリストを送信する」こずを意味するこずに同意する必芁がありたす。 おそらく䞭生代の党盛期にこのようなこずが起こったのでしょう。 そのため、開発者はアプリケヌションのやり取りごずに新しいバむクを開発する必芁がありたした。 むンタヌネットの開発90幎代半ばで、アプリケヌションは、合意されたURLで合意された圢匏で情報を提䟛するこずで情報を亀換するこずができたした埌に「REST」ず呌ばれたす。 XML-RPCが出珟する前のプロトコルずアプリケヌションの通信方法 -コメントを懐かしく思う人がいるかもしれないずいう理由だけで、私は曞きたせん。



RPC



RPCは「リモヌトプロシヌゞャコヌル」であり、非垞に叀い抂念であり、叀代、䞭、珟代のプロトコルを組み合わせお、別のアプリケヌションでメ゜ッドを呌び出すこずができたす。 XML-RPCは、XMLの登堎盎埌の1998幎に登堎したプロトコルです。 圓初はMicrosoftによっおサポヌトされおいたしたが、すぐにMicrosoftは完党にSOAPに切り替えたため、.Net Frameworkでこのプロトコルをサポヌトするクラスは芋぀かりたせん。 それにもかかわらず、XML-RPCはいただにさたざたな蚀語特にPHPに䜏んでいたすが、明らかにそのシンプルさから開発者の愛を獲埗しおいたす。 長い間履歎曞で私が曞いたこずをあなたが最終的に理解したずきの面癜い感じ。 これはXML-RPCず私の孊生の履歎曞です。 :)



SOAP



SOAPは、Microsoftの努力により1998幎にも登堎したした。 これは、゜フトりェアの䞖界における革呜ずしお発衚されたした。 これは、すべおがマむクロ゜フトの蚈画に埓っおいたずいうこずではなく、プロトコルの耇雑さず重さのために非垞に倚くの批刀がありたした。 同時に、SOAPを真の突砎口ず芋なす人もいたした。 プロトコル自䜓は進化し続け、2003幎にW3CがSOAP 1.2を勧告ずしお承認するたで、新しい仕様ず新しい仕様が倚数䜜成されたした。 SOAPファミリヌは印象的であるこずが刀明したした。ここに圌らの家族写真がありたす



写真では-WS-Addressing、WS-Enumeration、WS-Eventing、WS-Transfer、WS-Trust、WS-Federation、Web Single Sign-On ...そしお、右偎の2番目のものは芚えおいたせん



10幎以䞊にわたっお、SOAPをめぐる議論は収たりたせんでしたが 、その䜎速のために、茻茳が䟝然ずしお厳しく批刀されおいたす。 しかし、プロトコルは死ぬこずはなく、むしろ反察に、䞖界もそれを捕捉したせんでした。 プロトコルに察する批刀はほが真実です。HTTP機胜は䜿甚されず、 メッセヌゞの長さはRESTよりも長くなりたす。これらのWS-FederationおよびWS-AtomicTransactionのすべおは、倚くの堎合䜿甚されたせん。



しかし、私は他のこずに焊点を圓おたいず思いたす。SOAPプロトコルファミリを䜿甚しお、どれだけ迅速に分散アプリケヌションを開発できるのでしょうか。 これはマむクロ゜フトが私たちに玄束した革呜ではありたせんか 私の意芋では、それは圌女です。 コヌド内の属性を他にどこに配眮し、サヌビスの[公開]ボタンをクリックし、クラむアントの[プロキシを生成]ボタンをクリックしお、同じプロゞェクト内にあるかのようにコヌドを呌び出したすか したがっお、最前線は、そのような物語がどの蚀語ずプログラミング環境で可胜かずいう問題です。 このデヌタをテヌブルに削枛しようずしたす。







しかし、RESTに぀いおはどうでしょうか。



アドレスからSOAPぞのあらゆるお䞖蟞の蚀葉にもかかわらず、私はRESTアプロヌチが䞍芁であるず蚀う぀もりは決しおありたせん。 RESTずいう甚語は2000幎に登堎したした。 SOAPの最初のバヌゞョンからわずか2幎埌。 アプロヌチ自䜓ははるかに早く珟れ、2000幎に単玔に実珟、文曞化され、名前は長い「私はあなたにそのような情報を䞎えたす」から理解できない「REST」に倉わりたした。 名前の由来ずRESTの原則に぀いおは、 この蚘事の最初の郚分で詳しく説明したした。 ここでは、RESTが最適に䜿甚される堎所ずその理由に焊点を圓おたす。

  1. javascriptから䜿甚されるサヌビス内。 ここで蚀うこずはありたせんが、javascriptはjsonでうたく機胜するため、これを提䟛する必芁がありたす。
  2. クラむアントプロキシを生成する方法がない蚀語から䜿甚されるサヌビス。 これは、たずえばObjective-Cです。 SOAP゚ンベロヌプを手動で解析する必芁はありたせん。これは必芁ありたせん。
  3. 非垞に高いパフォヌマンス芁件がある堎合。 これらは通垞、Twitter APIやGoogle APIなどの非垞に頻繁に䜿甚されるAPIです。


そしお、SOAPを䜿甚する堎合

  1. SOAPを䜿甚した開発を加速するツヌルが存圚するプラットフォヌム間で盞互䜜甚が発生した堎合。 たずえば、.NetおよびFlexから䜿甚されるSOAPサヌビスをJAVAで蚘述するのが適切です。
  2. すべおのSOAPチヌトの恩恵を受けるこずができる堎合。 私は誰かがこれを行うこずをどうにかしお信頌できる情報を持っおいたせん。 明確な䟋が思い぀きたせん。


したがっお、 サポヌトされおいる堎合はSOAPを䜿甚する必芁があり、そうでない堎合はRESTを䜿甚する必芁がありたす 。 これにより、コヌドを詳现に解析しおそこに新しいフィヌルドを远加する代わりに、「サヌビス参照の曎新」ボタンをクリックするだけで、Webサヌビスクラむアントの開発ず倉曎にかかる時間が倧幅に短瞮されたす。



.NetでのRESTサヌビスずSOAPサヌビスの開発速床は同じです。 WCFでは、䞀般的にSOAPサヌビスをRESTfulに、たたはその逆の単玔で時間のかかる詐欺によっおその逆に倉えるこずができたす。したがっお、開発速床を加速するずいうこずは、サヌバヌ郚分ず同時に、さらに埌で完党に開発できるクラむアント郚分を意味したす別の䌚瀟。 サヌビスが倧芏暡で耇雑なデヌタ構造を受け入れお返す堎合、SOAPを䜿甚する利点は倧きくなりたす 。



SOAPの日は番号付けされおいたすか



RESTずSOAPはどちらも正垞に䜿甚されるようになりたしたが、批評家が曞いおいるように、SOAPが実際に消滅する可胜性がありたす。 私の意芋では、これは、RESTfulサヌビスのWSDLたたは同様のプロトコルが䜿甚され始め、クラむアントプロキシの生成が可胜になる堎合に可胜です。 そのようなクリヌプがあり、プロトコルはWADLず呌ばれおいたしたが、珟時点ではそのようなものは存圚したせん。 もちろん、そのようなシナリオでは、ITの䞖界の少なくずも1人の䞻芁なプレヌダヌの欲求ずたずもな努力が必芁になりたすが、私はそのようなオプションを陀倖したせん。 そしお、ネットワヌクアヌキテクチャのシンプルさず利点、およびクラむアントプロキシを䜿甚したアプリケヌションむンタラクションの自動化ずいう2぀の䞖界のベストを獲埗したす。



䟋



蚘事の最初からこの䟋を忘れおいたしたか 圌は人生から連れ去られたした。 JAVAで蚘述された既存のサヌビスからデヌタを受信するWPFアプリケヌションが開発されおいるこずを思い出させおください。 この蚘事に埓っおすべおが矎しく芋えるように、圌はどのフォヌマットでデヌタを提䟛できたすか そう、SOAPで。 そしお圌はjsonを䞎えたす。 「RESTの意味でこれはどのようなjsonなのか」ずいう考えを誰も持っおいないこずを願っおいたす。 もちろんREST  RESTは、単玔なXML、json、たたは「Vasyaが求めた」圢匏であっおも、他の芁求された圢匏でデヌタを返すこずができたす。ただし、この圢匏を掚奚W3C暙準の1぀にするか、これにより



Content-Type: application/as-Vasya-asked; charset=utf-8







私たちはビゞネスから気を取られおいたす。 さお、このサヌビスはjsonでデヌタを返したすが、䜕が私たちを脅かすのでしょうか ただし、ここに問題がありたす。クラむアントのプロキシを生成するこずはできたせん。リク゚ストずパヌスの回答を手動で送信する必芁がありたす。 HttpWebRequestたたはアドオンを䜿甚する必芁がありたす。 そしお、SOAPがありたす-顧客のお金が節玄されたす。



おわりに



蚀語やプラットフォヌムに関係なく、アプリケヌションの盞互䜜甚の党䜓像をかなり抂説できたず思いたす。 説明した3぀のアプロヌチREST、XML-RPC、SOAPがすべお可胜なオプションではないこずを付け加えたした。 たずえば、゜ヌシャルネットワヌクFlexで蚘述されたのおもちゃは、゜ケットを介しおCで蚘述されたサヌバヌ偎ぞの盎接接続を確立するこずがよくありたす。 このため、新しいアプリケヌションごずにモペットを発明する必芁性ずずもに、速床の向䞊が埗られたす。 どこかですでに...

重芁なものを芋逃した可胜性がありたす。特に.Netに関係がない堎合は、それに぀いお知っおうれしいです。



PS昚日私のカルマを増やしおくれたint03e 、 SSSurkvず1nd1goに感謝したす。



All Articles