Webアプリケーションのアーキテクチャとアーキテクチャスタイル-1

建築様式の比較 Roy T. Fielding(RESTの著者)の論文に基づく基本用語を使用したWebアプリケーションの基本的なアーキテクチャスタイルに関する参照情報が提供されています。 最初の部分では、アーキテクチャスタイルのリストとそれらの比較のための表を提供します。 2番目では、スタイル自体の説明が計画されています。





はじめに



なぜこれが必要なのですか?

ネットワークを介して相互作用するアプリケーションを適切に設計するには、アーキテクチャに必要なプロパティを与えることができる基本的なアーキテクチャスタイルを知る必要があります。



どのようなWebアプリケーションについて話しているのですか?

ネットワークベースのハイパーメディアシステム。



スタイル比較



定義


アーキテクチャ(ソフトウェアシステム)は、ソフトウェアシステムの特定のフェーズにおけるソフトウェアシステムの要素のモデルです。



ソフトウェアシステムは、さまざまな詳細レベルで考慮することができます。また、操作の多くのフェーズ(開始、初期化、プロセス、再初期化、完了)とも考えることができます。 詳細の各レベルと作業の各フェーズには、独自のアーキテクチャがあります。



アーキテクチャスタイルは、アーキテクチャ要素の役割と特性、およびこのスタイルに一致するアーキテクチャのこれらの要素間の許可されるタイプの関係を定義する、順序付けられたアーキテクチャ制約のセットです。



テーブルの建築スタイル(スタイル)/建築プロパティ(プロパティ)


最初の列はスタイルの名前、2番目の列は親スタイルの名前です(1つあるスタイルの場合)。



表の値は、対応する建築プロパティに対する建築スタイルの相対的な影響を示しています。 マイナス(-)はマイナスの影響、プラス(+)はプラス、(±)は追加条件に依存する影響を意味します。



問題のスタイルとプロパティのリストは、表の後にあります。

画像

スタイル



21の建築スタイルを考慮しました。

  1. データフロースタイル

    1. PF(パイプおよびフィルター)
    2. UPF(均一パイプおよびフィルター)


  2. 複製スタイル

    1. RR(レプリケートされたリポジトリ)
    2. $(キャッシュ)


  3. 階層スタイル

    1. CS(クライアントサーバー)
    2. LS(レイヤードシステム)
    3. LCS(レイヤードクライアントサーバー)
    4. CSS(クライアントステートレスサーバー)
    5. C $ SS(クライアントキャッシュステートレスサーバー)
    6. LC $ SS(レイヤードクライアントキャッシュステートレスサーバー)
    7. RS(リモートセッション)
    8. RDA(リモートデータアクセス)


  4. モバイルコードスタイル

    1. VM(仮想マシン)
    2. REV(リモート評価)
    3. COD(コードオンデマンド)
    4. LCODC $ SS(レイヤードコードオンデマンドクライアントキャッシュステートレスサーバー)
    5. MA(モバイルエージェント)


  5. ピアツーピアスタイル

    1. EBI(イベントベースの統合)
    2. C2(コンポーネントベースおよびメッセージベース)
    3. DO(分散オブジェクト)
    4. BDO(ブローカー分散オブジェクト)




物性



13の建築特性を考慮しました。

  1. 性能

    1. ネット(作業)パフォーマンス -ネットワーク経由で送信されるデータ量に応じたパフォーマンス
    2. UP(ユーザー知覚)パフォーマンス -ユーザー知覚パフォーマンス


  2. ネットワーク効率 -ネットワーク効率(ネットワークおよびデータ転送ボリュームとの相互作用の強度)
  3. スケーラビリティ -スケーラビリティ(多数の要素とその相互作用をサポートするアーキテクチャの能力)
  4. 単純性 -単純性(システムが単純な要素に分割される程度)
  5. 変更可能性

    1. 進化性-1つのコンポーネントの変更が他のコンポーネントに影響を与えない程度
    2. 拡張性 -システムに新しい機能を追加する機能
    3. カスタマイズ可能性 -コンポーネントの動作を一時的に変更して、新しい機能を実装する機能
    4. Configurabiity-起動後にシステムコンポーネントの動作を変更する機能
    5. 再利用性 -システム要素を再利用する機能


  6. 可視性 -他のコンポーネントの相互作用を監視するコンポーネントの能力
  7. 移植性 -さまざまな環境で実行する機能
  8. 信頼性 -信頼性(コンポーネントの一部が動作不能になったときのシステム全体の障害の確率)




まとめ


提示された表は、主に2つの理由で興味深いものです。Webアプリケーションのすべてのアーキテクチャスタイルは、何らかの方法で組み立てられ分類され、多数のパラメーターについても比較されます。



All Articles