SOAの「わかりやすい英語」とは何ですか?[閉まっている]


112

誰かがプレーンな英語でSOAとは何かについて説明できますか?ここでSOAを聞きますが、SOAがありますが、それが何で何に使われているのか正確には理解できません。それはいくつかの単純な概念でしたが、後で何か巨大なものに進化しましたか?

ウィキを含むすべてのドキュメントは少し抽象的であるか、多分私はばかであり、それを取得しません。これに関するばかガイドはありますか?

これらの3つの文字の後ろには、正確には何がありますか?


7
SOAを抽象的に説明するのをやめ、すでに理解している人だけが "Hello、world"のコーディング例を理解して示すことができればいいと思います。デモコードは、大げさなことを話す。
Phil

@フィル-私の答えを確認してください。私は類推を使用しようとしました。
Niklas

実際に馬鹿のガイドは、あります:amazon.com/Service-Oriented-Architecture-Dummies-Edition/dp/...
NULL可能では

3
実際、Amazonは完璧な例です。ある時点で、BezosはAmazonのコードベースのすべての部分がAPIであり、Webリクエストに応答する必要があると主張しました。ここの記事:apievangelist.com/2012/01/12/…。ログインするとこれを確認できます-Amazonは独自のログインシステムにOpenIDを使用しています!ほとんどのWebサイトは、ログインに組み込みシステムを使用しています。1つの利点は、すべてのサイトとサービスに同じログインを使用できることです。
ジョーダンライター

回答:


49

あなたは見つけるかもしれない- (?SOAおよびWebサービスは、SOAの説明は何ですか)この記事を有用。

少しお誘い:

  • SOAは、シンプルで明確に定義されたインターフェースを持つ個別のソフトウェアエージェントで構成され、疎結合を介してオーケストレーションされて必要な機能が実行されるように、アプリケーションを設計するスタイルです。

  • SOAには、サービスプロバイダーとサービスコンシューマーの2つの役割があります。ソフトウェアエージェントは両方の役割を果たす場合があります。SOAはまったく新しい概念ではありませんが、この記事では主にWebサービスで実装されるSOAに焦点を当てています。


6
うーん... CORBA、IDL、クライアントサーバー... 1980年代のように聞こえますが痛いです!;-D
CesarGon

64

SOAは、非常に古いアイデアの新しいバッジです。

  • コードを再利用可能なモジュールに分割します。

  • 変更される可能性のある設計上の決定をモジュールにカプセル化します。

  • モジュールをさまざまな方法で組み合わせることができるようにモジュールを設計します(「ファミリー」または「製品ライン」と呼ばれることもあります)。

これらはすべて、基盤となるソフトウェア開発の原則であり、その多くは、David Parnasによって最初に明確化されました。

SOAの新機能は

  • あなたはネットワーク上でそれをやっています。

  • モジュールは、プロシージャコールのような従来のプログラミング言語メカニズムではなく、ネットワークを介して互いにメッセージを送信することによって通信します。特に、サービス指向アーキテクチャーでは、パーツは通常、変更可能な状態(従来のプログラムのグローバル変数)を共有しません。または、それらが状態を共有する場合、その状態は、それ自体がエージェントであり、複数の同時クライアントを容易に管理できるデータベースに慎重にロックされます。


43

さらに高度な単語と技術用語を使用してサービス指向アーキテクチャー(SOA)を説明する多くの回答が表示されます。私は平易な英語でのアナロジーを使用して、素人のためにそれを説明することに一撃を与えたいです。

ただし、最初にSOAの説明
SOAは、下の図に示すように3つの層で説明できます。一方には、プロバイダーがあり、もう一方には、ブリッジで区切られたコンシューマーがあります。ます。で、2つのサイドが通信します。

コンシューマーはビジネスに必要な多数のアプリケーションを使用し、プロバイダーはこれらのアプリケーションに情報を提供するコンポーネントを使用します。共通のアーキテクチャを使用して、一連のサービスを通じて通信します。


ここに画像の説明を入力してください


たとえ話
が田舎にある家を想像してください。それは多くの点で都市や町のようなより大きなコミュニティの一部です。市には、水と電気の供給、衛生管理、輸送およびその他のユーティリティを提供するための独自の複雑なシステムがあります。ハウスは、このモデルでは、消費者である、(またはコミュニティ)は、プロバイダとのパイプ、下水道、電力線、光ファイバなどであるインフラストラクチャが、彼らが通信します。

このモデルは、大まかにSOAと比較できます。家の人々は、ラジエーター、コンピューター、トイレ、ランプ、床暖房、浴槽などのさまざまな「アプリケーション」を使用しています。これらのアプリケーションは、都市がどのように水を生成し、電気を作り出し、廃棄物を処理するかを気にしませんそれが機能するように。市の構成要素は、発電機、給水ポンプ、衛生エリアです。それは家にこれらすべての必要性を提供しますが、それがどんなに適切であると思われるとしてそれを使うかは家次第です。

これが少なくとも誰かにSOAのより良い絵を与えてくれることを願っています。


27

料理人が4人いるとします。SOAでは、あなたは彼らがお互いを憎んでいると想定しているので、彼らはお互いにできるだけ会話しないように努めています。

どうやってやるの?まあ、あなたは最初に役割とインターフェースを定義します-クック1はサラダを作り、クック2はスープを作り、クック3はステーキを作る、などです。インターフェース)、そして「誰もがあなたの創造物をあなたの割り当てられた皿に置いてください。他の誰かを気にしないでください。」と言います。

このようにして、4人の料理人はお互いに最小限の会話をする必要があります。これは、ソフトウェア開発において非常に優れています。必ずしもお互いを憎むからではなく、物理的な場所、意思決定の効率などの他の理由のためです。

また、料理(サービス)を好きなように組み替えることもできます。たとえば、デザートを使用してカフェにサービスを提供したり、スープを取り、それを他の会社から購入したパンと組み合わせてより安いメニューを提供したり、他のレストランにサラダを使用して料理と組み合わせたりすることができます。 。

SOAの最も成功した実装の1つはAmazonでした。彼らの設計により、彼らはインフラ全体を再パッケージ化し、Amazon Web Serviceとして販売することができました。

*これはSOAの1つの側面にすぎません。


17

SOAはアーキテクチャスタイルですが、異種アプリケーションをどのように開発して統合するかについてのビジョンでもあります。SOAの主な目的は、から離れてシフトさせることであるモノリシックなアプリケーション、代わりに持って再利用可能なサービスのセットビルドアプリケーションに構成することができます。

私見、SOAはエンタープライズレベルでのみ意味があり、単一のアプリケーションには何も意味しません。

多くの企業では、各部門に独自の一連のエンタープライズアプリケーションがあり、

  1. 同様の機能が数回実装されました

  2. データ(顧客や従業員のデータなど)を複数のアプリケーション間で共有する必要がある

  3. アプリケーションは部門中心でした。

SOAを使用すると、企業全体で再利用可能なサービスを利用できるようにすることで、アプリケーションを構築して構成できるようになります。SOAの約束は

  1. 同様の機能を何度も再実装する必要はありません(たとえば、顧客または従業員のサービスを提供します)。

  2. アプリケーションの統合と共通のデータまたは機能へのアクセスを容易にします

  3. 企業中心の開発努力。

SOAビジョンには、技術的なシフトと組織的なシフトが必要です。それはいくつかの問題を解決する一方で、他のものも導入します。たとえば、セキュリティはSOAではモノリシックアプリケーションよりもはるかに困難です。したがって、SOAは機能するかどうかについての議論の対象となります。

これは、SOAの1000フィートのビューです。しかし、それだけではありません。ビジネスプロセスオーケストレーション(BPM)、エンタープライズサービスバス(ESB)、複合イベント処理(CEP)など、SOAを補完する他の概念があります。これらはすべて、IT /ビジネスの連携の問題、つまりITビジネスを効果的にサポートできる。


1
はい。しかし、誰かがあなたにモノリスを購入または使用して、Oracle SOAのようなすべてを制御したり、Microsoft WCFを使用することを望んでいます。常にモノリスはありませんか?
ジョニー

WCFとOracle SOAは、SOAソリューションとは関係のないテクノロジの依存関係です。このコンセプトは、特定のテクノロジーではなく、簡単に保守可能な独立したサービスに基づいています。
BentOnCoding 2012年

4
+1は、SOAの組織レベルの「大きな」意味について言及しているためです。他の多くの回答はソフトウェアコンポーネントの側面に焦点を当てています。厳密に言えば、それは全体像ではありません(たとえそれが人々が頻繁に使用する意味であっても)。
オクルス

10

SOAは、サービス指向アーキテクチャーの頭字語です。

SOAは、個別のソフトウェアモジュールを高度な再利用性とシームレスに統合できるように、ソフトウェアアプリケーションを設計および作成しています。

ほとんどの人は、SOAをクライアント/サーバーソフトウェアWebサービスの作成として制限しています。しかし、SOAのコンテキストとしては小さすぎます。SOAはそれよりもはるかに大きく、過去数年間、Webサービスが主要な伝達手段でした。これが、SOAを一般にSOAの境界と意味を制限する一般的なWebサービスと考える理由です。

独立しているため、依存関係なしに独自に動作できるデータベースアクセスモジュールを作成することを考えることができます。このモジュールは、データベースアクセスを必要とするすべてのホストソフトウェアで使用できるクラスを公開できます。ホストアプリケーションに起動構成はありません。必要なものや必要なものはすべて、データベースアクセスモジュールによって公開されるクラスを通じて伝達されます。これらのクラスをサービスと呼び、モジュールをサービス対応と見なすことができます。

SOAを実践すると、DRY(自分を繰り返さないでください)を強制することで高度な再利用性が得られ、保守性の高いソフトウェアになります。保守性は、どのソフトウェアアーキテクチャでも最初に考えられることです。SOAがそれを提供します。


6

私が理解している限り、基本的なコンセプトは、他のシステムに役立つ何かを提供する小さな「サービス」を作成し、システム内ですべてを行う傾向がある大規模なシステムを構築しないことです。

そのため、対話に使用するプロトコル(SOAP Webサービスなど)を定義し、「システムが行う業務」を小さなサービスと対話させて、「大きな目標」を達成します。 。


2
アーキテクチャの質問を推測しないでください。Stackoverflowはエキスパートの回答を得る場所であり、昨年見た記事からのランダムな推測ではありません。この回答が投票されたのは悲しいことです。
BentOnCoding、2012年

5

Thomas ErlとRoger Sessionsの記事を読むことをお勧めします。これにより、SOAのすべてについてしっかりと理解できます。これらは優れたリソースでもあります。上司に説明されたSOAを素人の説明に見てください。

SOAの構築

SOAデザインパターン

SOAで整合性を実現する

SOAがVWビートルのようになる理由

上司に説明されたSOA

WCFサービスのパフォーマンス


4

大規模な組織で発生する傾向があるのは、時間の経過とともに、すべてがどこでもモノリシックシステムまたは異種システムのいずれか、またはその両方になることです。誰かがやっと入ってきて、私たちは混乱していると言います。さて、あなたがすべてを再設計したい(誰かにお金を)一種のモノリシックに方向付けられるようにしたいのは、あなたがパラダイムを支払う人に依存しますが、同時にマスター/モノリスから独立してピースとパーツを追加できるようになります。

したがって、OracleのSOAを購入すると、Oracleがすべての部品のボスになります。参加する他のすべてのプレイヤーは、サービス(Webサービスまたはそれが何であれ)を介してSOAを操作する必要があります。そうそう、ASP.NET MVCが前面か何かに配置されています。

主なことは、システムに影響を与えずにシステムの内外に移動し、ベンダーのOracle SOA、Microsoft WCFをすべての頭脳として維持することです。コンピュータだけでなく、ヒューマンサービスでさえも、すべてがすべてのoop / oodのように流動的で、物事がほとんどまたはまったく影響を受けずに出入りします。

私にとっては、フロントエンドが充実した一連のWebサービス(または将来的に私たちが呼ぶもの)を意味します。そして、もしあなたがデータベースを所有しているのであれば、データベースにアクセスして流行語の心配をやめるだけです。いいんだよ。



3

そうですね。SOAはService Oriented Architectureの略です...最も単純な言葉で言えば、非常に一般的なコードを記述します。つまり、多くのアプリケーションで使用できるいくつかのコードを実行します...アドレス帳または電卓かもしれません。IISでこのコードを起動します。つまり、コードを通じてサービスを提供します。あなたはサービスプロバイダーです。これで誰かが同様のコードを使用したいので、コードを再度記述する必要はありません。彼は単にWebサービスを介してコードを使用するだけです。したがって、彼はサービス消費者になります。したがって、このようなサービスを使用してプログラムを作成することをSOAと呼びます。また、サービスプロバイダーとコンシューマーがdiffプログラミング言語を使用している場合でも対話している可能性があるため、疎結合が存在します。ご理解いただければ幸いです。


3

ittoolboxブログから。

以下は、過去の設計手法との類似点と相違点の概要です。

•SOAと構造化プログラミングo類似点:パラメータが渡され、関数の操作が呼び出し元から抽象化されているサブルーチン呼び出しに最も似ています(CICSリンクと実行、およびCOBOL CALL予約語など)。コピーブックは、通常、サービスのXMLスキーマとして定義されるデータ構造を定義するために使用されます。o相違点:SOAは疎結合であるため、サービスへの変更はコンシューマー(「呼び出し」プログラム)への影響が少なく、サービスは言語およびプラットフォーム間で相互運用可能です。

•SOAとOOA / OODの類似点o類似点:カプセル化、抽象化、定義されたインターフェースo相違点:SOAは、クラス階層や継承がなく、疎結合です。低レベルの抽象化-クラスレベルとビジネスサービス

•SOAと従来のコンポーネントベースの開発(CBD)-例:CORBA、DCOM、EJB o共通点:コンポーネント、インターフェース、リモートコールのアセンブルによる再利用o相違点:標準の広範な採用、XMLスキーマとマーシャリングオブジェクト、サービスオーケストレーション、再利用のための設計より簡単で、サービスはビジネス中心であるか、IT中心であるか、ビジネスサービスはきめ細かく(範囲は広い)

•SOA(統合用)対エンタープライズアプリケーション統合(EAI)o類似点:ベストプラクティス(明確に定義されたインターフェース、標準化されたスキーマ、イベント駆動型アーキテクチャー)、再利用可能なインターフェース、共通スキーマo相違点:標準、採用、および改善されたツール


3

上記の回答を読むと、SOAは開発者(少なくとも優れた開発者)が初日からやってきたことだと思います。


2

また、並列(特にSIMD)プログラミングの一般的なトピックである「配列の構造体」(「配列の構造体」とは対照的)を表すこともできますが、ここではそうではないようです。


コメントなしで少し厳しい投票!
Tom

2
@Downvoters:この質問は、Tomsの回答への反対票を正当化するのに十分なコンテキストを実際には提供しません。他のすべての人がサービスアーキテクチャのコンテキストでSOAという用語で麻痺しているからといって、これが問題になるわけではありません。
セバスチャンマッハ

1
@phresnelタグはsoaであり、少しの間その上にカーソルを合わせると、クエシトンのコンテキストの明確な説明が表示されます。
BentOnCoding 2012年

4
@Robotsushi:そして、少しの間タグ調査できれば、説明がトムズの回答から1年以上経過してから追加されたことがわかります。
セバスチャンマッハ

質問のコンテキストがわからない場合、専門家の回答を提供することはできないと思います。質問の性質に関するコメント内の簡単な質問は、この謎をすぐに解決したでしょう。
BentOnCoding 2012年

2

SOAは、エンタープライズサービスバス関連のテクノロジーの販売を支援するためにテクノロジーベンダーによって発明された流行語です。アイデアは、企業内の小さなアイランドアプリケーション(例:会計システム、在庫管理システムなど)をすべて公開するサービスであり、それらを柔軟に「アプリケーション」に統合できるようにする、またはむしろエンタープライズスコープビジネス全体の一部にすることができるというものです。論理。

基本的に、ほとんど機能しない古いbollocksの負荷。テクノロジーが組織内の方法である理由が文化、進化、会社の歴史、そしてロックインにある理由が非常に高く、テクノロジーを再構築する試みは失敗するはずです。


1

SOAを取り上げた今週のFloss Weeklyポッドキャストをお聴きください。説明はかなり高レベルであり、あまり多くの技術的な詳細を掘り下げないでください(ただし、SOAプロジェクトのより具体的でわかりやすい例が参考になったでしょうが)。


1

従来のアプリケーションアーキテクチャは次のとおりです。

  • ユーザーインターフェース
  • ユーザーインターフェイスの背後にカプセル化/非表示されている未定義のもの(実装)

プログラムでデータにアクセスする場合は、画面のスクレイピングに頼る必要があるかもしれません。

SOAは、UIの公開ではなく、機械で読み取り可能なデータやAPIの公開に焦点を当てたアーキテクチャのように思えます。


1

SOA(Service-Oriented Architecture)は、特定の一連の特性に準拠する基本的な(通常は分散型の)ソフトウェアサービスからアプリケーションまたはシステムが構築されるソフトウェアアーキテクチャパターンです。

  1. インターフェース、ポリシー、契約ベース
  2. 場所の透明性
  3. 自律
  4. 概要
  5. 再利用可能
  6. 構成可能
  7. ステートレス
  8. 発見可能
  9. 拡張可能
  10. 疎結合

SOAの主な目的は、ソフトウェア開発の俊敏性、つまり変更を簡単かつ安価に対応できる能力であり、それにより企業は変化する市場に迅速に対応できるようになります。

サービスは通常(しかし決して排他的ではなく)Webサービスとして実装されます。つまり、ユビキタスWeb HTTPプロトコル上で動作し、XMLベースのSOAPまたは軽量(そしてより一般的な)RESTパラダイムを使用して実装されます。


1

あなたが誰であるかに依存します!

あなたがビジネスオーナーなら、SOAはあなたの収入とビジネスの俊敏性を向上させるソリューションです。起業家のアーキテクトであれば、SOAは、すっきりしたキャンバスに素敵でクリーンなソフトウェアを描く方法です。あなたがアーキテクトであれば、SOAは、サービスをコンセントに接続するだけで、統合プラットフォーム上で疎結合サービスを設計するソリューションです。開発者の場合、SOAは、サービスがデザインとコードの中心にあるプログラミングパラダイムです。

100-SOA-Questions [pdf]をお読みください

乾杯


1

サービス指向アーキテクチャー(SOA)は、プラグイン可能なパーツのコレクションとしてアプリケーションを構築するソフトウェアアーキテクチャスタイルであり、それぞれを他のアプリケーションで再利用できます。

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