SOAPについての質問です。
色々調べているのですが、いまいち分かりません。
というのもその説明にあたって、「Webサービス」と言う言葉が登場してくることが多いのですが、その「Webサービス」と言う言葉がいまいちわからないからです。
まず、wikipediaによると、
https://ja.wikipedia.org/wiki/Webサービス
にありますように
「HTTPなどのインターネット関連技術を応用して、SOAPと呼ばれるXML形式のプロトコルを用いメッセージの送受信を行う技術、またはそれを適用したサービス」
とあります。
また、
https://thinkit.co.jp/free/books/2/5/1/
には
「Webサービスとは、ネットワーク上で、マシンとマシンをつなぐソフトウェアシステムのことです。この場合の「サービス」とは、プログラム処理のことをあらわします。」
とあります。
また、
http://www.utj.co.jp/xml/dev/soap/soap1_1.html
には
「まずWebサービスとは何でしょうか。WEBサービスの「サービス」とはプログラム処理のことを指します。
通常のプログラムでは入力を受け取り、処理を行って出力を返します。同様の流れをWeb上で行うのがWebサービスです。
つまりインターネット経由でのメッセージを「入力」として受け取り、処理を行ってから「出力」を返します。
従ってWebサービスとは、Webサイトに限られるわけではなくWeb経由でアクセスすることのできるあらゆるサービス(プログラム)と捉えることが出来ます。」
とあります。
以上をまとめると、webサービスとはソフトウェアシステムでマシン間の通信を担うのがSOAPと言うことになりそうですが、webサービスがいまいち分かりません。
amazonのようなサイトで検索フォーむに文字を打ち込み、検索結果を得ることを考えます。
大体の流れとしては、コントローラがリクエストを受け取り、そのリクエストを見て、そしてデータベースサーバ等にアクセスすることになると思うのですが、この時の「webサービス」というのはこのAPサーバとDBサーバを含めたソフトウェアシステムを指すのでしょうか?
クライアント(検索をしたノード)は通常含めないのですよね?
質問がわかりづらいかもしれませんが、よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
※以下は、言葉の正確な正しさより、
意味の分かりやすさを優先した説明です。
インターネット経由でのメッセージを「入力」として受け取り、
処理を行ってから「出力」を返します
この説明をベースに、イメージをふくらませてみましょう。
function ()
おなじみの関数やメソッドにたとえますと、
function ("http://sample.com/somthing/1234")
引数にURLなどを与えて呼び出し、戻り値が目的のものが「WebAPI」、
副作用が目的のものが「Webサービス」と考えると分かりやすいです。
逆に副作用や動的要素がなく、たんにHTMLを返すものが「Webサイト」。
もちろん、「SOAPが~DBが~」と、いくらでも複雑化できますが、
べつにSOAPじゃなくてRESTでも、DBがなくても、
Webサービスと言っていいので、実装を隠蔽して捉えましょう。
一番シンプルな理解としては、パソコンの内側のオブジェクト指向と、
外側のネットワークを、「分散システム」として同一視します。
つまり、PCでもWebでも、APIやアプリを区別せず同一視します。
投稿2016/09/12 16:19
総合スコア5592
0
ベストアンサー
サービスという言葉をわざと使うのは、そのシステムが提供するものに意識を集中したいからです。中がデータベースかどうかとかを気にしていると理解しにくいです。。
昔、Service Oriented Architecture が騒がれた時代があって、その時の有名な例題は航空会社ごとの飛行機予約システムとホテルの予約システムをAPIでつないで、旅行予約サービスを作ると言うものでした。
Webシステムが、形はないけど価値があるものを提供する時それをWebサービスと言います。
Amazoneのサービスは簡単に買い物ができて素早く届くというものであって、その付加価値で利益を出してるわけです。つまり、ものを売っているというよりもサービスを提供しているのです。
それで、サービスは形がないので、サービスとサービスを組み合わせて別のサービスを提供したり(マッシュアップと呼ばれています)、利用者に便利なように変形することが可能です。
そのようなことをしようとすると、各サービスがAPIを提供してなければなりません。かつ、そのAPIが標準化されてなければなりません。
そこで産まれたのがSOAPです。
まあ、その後歴史的にいろいろあったのですが、海外のメジャーなサービスが必ずAPIを提供していることを考えると、その考え方は間違ってなかったと思われます。
日本のITでは、サービスという考え方が弱く、APIを提供しているシステムが少ないので、このあたりを理解しにくいかもしれません。
投稿2016/09/12 15:10
総合スコア3401
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/13 00:22
退会済みユーザー
2016/09/13 02:45
2016/09/13 08:46
退会済みユーザー
2016/09/13 13:55
2016/09/13 14:38
退会済みユーザー
2016/09/13 23:55
2016/09/14 03:41
退会済みユーザー
2016/09/14 09:58
退会済みユーザー
2016/09/14 12:52
2016/09/14 23:02
退会済みユーザー
2016/09/15 05:58
2016/09/15 07:05
退会済みユーザー
2016/09/15 14:08
2016/09/15 15:24
退会済みユーザー
2016/09/15 23:44
0
もう少しだけ視野を広げたほうが理解が深まるかもしれません。
通信の勉強をすると出てくるプロトコルというものがあります。
このプロトコルは階層に分かれており、電気的・物理的規約な決め事をしているPhysical層から、
電子メール(SMTP),ファイル転送(FTP),WWW(HTTP)などの決め事をしているApplication層まで様々な通信の決め事があります。
SOAPについてもService層の1つと言われており、他にメジャーなものでいうとJSONなどが使われています。
Webサービスとはプログラムだけでなく、そのプログラムを構成している言語やそのプログラムが利用するDBやそれらを動かすOSのようなミドルウェア、そのミドルウェアを動かすためのハードウェア、通信するためのネットワーク回線を指すと思っています。
「このWebサービス遅くてイライラする・・・」というのはもしかするとサーバーのスペックが足りない、ネットワークに負荷がかかりすぎている、そもそもプログラムのアルゴリズムが複雑すぎるなど色々な要因があります。
Webサービスはこの層の組み合わせと、その組み合わせを動かすためのものすべてであると僕は思います。
投稿2016/09/13 01:33
総合スコア2021
0
SOAPのことを解説する文脈で「Webサービス」という言葉が出てくるのはなぜかと言いますと⋯
マシン間の通信を、どうプログラミング的に扱い易くするかという問題はずっと以前からあって、その方法の一つが「分散オブジェクト」と呼ばれる手法です。いきなりややこしそうな言葉が出てきました。
こう考えてください、普通「オブジェクト」といったらメモリ上に存在するデータであり、それに対してアクセスするのも自機のメモリ内での話です。他のマシンに存在するオブジェクトのメソッドをまるで自機のメモリ内にあるものであるかのようにアクセスできるようにする仕組み、ということです。
これができれば、オブジェクトのメソッドを叩くコードを書けばそれが通信処理になっています。メソッドを叩くのは、引数を渡して呼び出し戻り値を受け取るという行為ですから、これはリクエストを投げてレスポンスを受け取る一問一答型の通信ですね。
あっそれHTTPに似ている! というのはもう少し先に気付くことにするとして。
こういう分散オブジェクト技術は90年代くらいにいろんなのが出てきました。WindowsのDCOMとかJavaのRMIとか。あとすべての開発言語で使える大統合分散オブジェクト技術だ!と華々しく登場して大コケして消えていったCORBAとか。
そういう戦国の動乱をやっている中で順調にWebが成長してきたことで、一問一答型の通信ならもうHTTPに乗せるのが当たり前でしょという時代になってきたことからMicrosoftあたりが中心になってまとめたのがHTTPベースのSOAPなわけです。
メソッド呼び出しというものを特定の言語にあまり縛られない形でXMLで表現してHTTPに載せてやりとりします。便利なんですよ。C#でクラス書いてメソッド書いてVisualStudioにWebサービス化させればそれがサービスのコントローラになって、そのWebサービスには仕様情報も自動的に付属しています(WSDLといいます)。このWSDLをVisualStudioに読ませると、アクセスするためのクライアント側クラスが勝手に生成されて、そのクラスのメソッド呼ぶだけでサーバの同じメソッドが実行されるようになるんです。
なぜ「Webサービス」というのか、それはもともと一問一答式のサーバを実現する手法としていろいろあった分散オブジェクト技術のうち、Webを通り道にしたもの、という意味合いになります。
その上で⋯
この時の「webサービス」というのはこのAPサーバとDBサーバを含めたソフトウェアシステムを指すのでしょうか?
クライアント(検索をしたノード)は通常含めないのですよね?
その理解で合っています。
投稿2016/09/12 15:55
総合スコア5568
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/09/13 00:13
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/09/13 00:15
2016/09/14 01:50 編集
退会済みユーザー
2016/09/14 09:58