サービス指向アーキテクチャー:それをどう定義しますか

StackOverflow https://stackoverflow.com/questions/59537

  •  09-06-2019
  •  | 
  •  

質問

最近、サービス指向アーキテクチャという言葉がますます注目されているようですが、オフィスに聞いてみると、サービス指向アーキテクチャについてはさまざまな定義があるようです。SOA をどのように定義しますか?公式の定義は何だと思いますか?

役に立ちましたか?

解決

マーティン・ファウラーが言うように、それは人によって意味が異なります。このテーマに関する彼の記事は非常に優れていますが、完全な定義ではありません。

http://martinfowler.com/bliki/ServiceOrientedAmbiguity.html

具体的な定義を思いつくのが難しいのは、このためかもしれません。

他のヒント

ウィキペディア:「SOA は、疎結合のソフトウェア サービスを使用してビジネス プロセスとソフトウェア ユーザーの要件をサポートするソフトウェア アーキテクチャです。SOA 環境のネットワーク上のリソースは、基盤となるプラットフォーム実装の知識がなくてもアクセスできる独立したサービスとして利用可能になります。」

SOA はそれほど新しいものではありませんが、いくつかの驚くべきことを実現する可能性を秘めています。しかし、組織はそれに備える必要があります。ビジネスはプロセスごとに考える必要があり、それが大きな問題です

私なら次のようにします:

複数のアプリケーションで活用されるように作成された、一連のステートレスのクライアント不可知論的ビジネスオペレーションを定義します。

SOA 設計にはコンポーネントが含まれます (つまり、 サービス) 実装 (つまり、任意の OS または言語) に関係なく、コードで使用できます。サービスの単一インスタンスを複数のアプリケーションで使用することもできますが、たとえば DLL はアプリごとに複製する必要があり、リンクするアプリケーションと同じ実装テクノロジが必要になります。

SOA 設計のサービスは通常、相互運用可能な Web サービスとして実装されます。

ライアンが先ほど述べたように、正式な定義はありません。しかし、サービス指向全体に対する Thomas Erl の見解は非常によく構造化されており、適切だと思います。彼の定義による SOA の定義は次のとおりです。 SOA用語集 (もっと):

サービス指向アーキテクチャは、組織に対する IT の全体的な負担を軽減しながら、企業の俊敏性とコスト効率を向上させることを目的としたアーキテクチャ モデルを表します。

Thomas Erl は多くの SOA タイトルの作者であり、そのほとんどが IBM、Oracle、Microsoft などの SOA ベンダーから承認を受けています。良い点 彼の本 それは、可能な限り SOA ベンダーに依存しないことです。これは、SOA をサポートする一部のベンダーのミドルウェアについてではなく、サービス指向自体について詳しく学ぶことを意味します。

この点についてファウラー氏を指摘しているすべての人々に私は同意します。基本的には次のように実行されます。サービス指向アーキテクチャは優れているという評判があり、人々が良いものと関連付けたいものはすべて SOA と呼ばれます。実際には、多くの欠点があり、サービス指向のグリッドロックまたは依存関係指向のアーキテクチャを作成する可能性があります。

私の定義は次のとおりです。サービス指向アーキテクチャは、アプリケーションがネットワーク経由で実行中の他のアプリケーションによって提供されるサービスへの接続に依存するシステム統合およびコード再利用のアプローチです。これは、ソフトウェア コンポーネントがライブラリや SDK などの形式でアプリケーション間で静的に共有されるコンポーネント アーキテクチャとは異なります。

ここで説明します - 「サービス指向アーキテクチャは システム統合 アプリケーションが依存するコード再利用アプローチ ネットワークを介して他の実行中のアプリケーションによって提供されるサービスに接続する."

イベント駆動型メッセージングを使用して 2 つの j2ee アプリケーションが統合されているシナリオがあります。ここで上記のフレーズは、 システム統合 そして ネットワークを介して他の実行中のアプリケーションによって提供されるサービスに接続する しっかりしてください。これをSOAと呼んでいいでしょうか?

ここでは、次の原則が良くなるでしょう1)ステートレス性2)メッセージ指向 - ゆるく結合されたインパクトが結合された3)拡張可能。

ただし、以下は1)プラットフォームの独立性を適用しません - 統合されているアプリケーションのどちらも、別のプラットフォームで動作するように設計されていません。2) アプリケーションは、すべての SOA 概念に基づいて設計されていないプレーンな j2ee アプリケーションです。

SOAを定義しようとしました 私のブログ投稿の 1 つ. 。以下は抜粋です...

長年にわたり、機能を関数、クラス、モジュールに分割することが標準的な方法でした。これらの小型で高度に専門化されたコンポーネントは、モノリシックなコード ブロックよりも共有および保守が容易であるという考えが常にありました。

機能的には、SOA と大きな違いはありません。目標は同じです - 再利用性と簡単なメンテナンスです。Web サービス SOA の場合の最大の違いは、アプリケーションに含まれる共有ライブラリが HTTP 呼び出しに置き換えられることです。

以下に定義します。

SOA - ソフトウェアオーバーアーキテクチャ。「dir /s > a.txt | ftp -s:upload.ftp」というように、一方の側からもう一方の側に 3D グラフィック フォルダーが飛び交う美しい Web サイトに、アーキテクチャと呼ばれる、無意味で肥大化した機能的なインターフェイス フレームワークが組み込まれている。仕事をした。

ソフトウェア コンポーネントはレンガではなく、一般的な機能パターンによって一般化することはできません。また、アーキテクチャは、優れた設計ではなく、優れた実践から企業内で生まれます。ソフトウェアは設計されたものではなく、設計されたものです。

スクラムオン!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top