web-dev-qa-db-ja.com

リアクティブプログラミングとイベント駆動型アーキテクチャの違いは何ですか?

リアクティブプログラミングとイベント駆動型アーキテクチャの違いは何ですか?

リアクティブプログラミングは、イベント駆動型プログラミングを実装する方法ですか?

2
mohsenJsh

リアクティブプログラミング-抽象レベルで-は、非同期データストリームを使用してフローを分離することを扱います。ただし、非同期データストリームを実現するための業界標準のほとんどはイベント駆動型のパラダイムによるものであり、ほとんどのReactive実装はこのアプローチを使用しています。

分離されたフローを作成するためのより良いアプローチがある場合、そのアプローチを使用したリアクティブプログラミングも可能です。

2
skott

リアクティブプログラミング

多くの人々が、特定の種類の現代的な大規模ソフトウェアシステムにとって、望ましい特性の特定の組み合わせの重要性が高まっていることを認識しています。協調して、これらのプロパティは、スケーラビリティ、柔軟性、堅牢性、リソース消費などに関連する一般的な非機能要件を満たします。この新たな概念は反応性を作り出し、反応システムを構成する一連のプロパティは反応マニフェストで定義されています。主な特徴は、応答性、弾力性、弾力性、メッセージ駆動型であることです。現在、これはおそらく最も広く合意されている反応システムの定義です。このリアクティブシステムの一般的な概念に基づいて、リアクティブプログラミングは、ソフトウェアでのこれらのプロパティの実現を容易にする任意のパラダイム、パターン、またはテクニックを指すと見なすことができます。

とは言っても、より技術的なレベルでは、リアクティブプログラミングは現在、伝統的にデータフロープログラミングとして知られているプログラミングモデルとして理解されており、ますます多くのプログラミング言語、フレームワーク、およびライブラリで活用されて、前述のプロパティ。

リアクティブシステムを構成するプロパティの派生元であるシステムは、通常、コンポーネント間のメッセージの明示的な処理によってフォールトトレランス、バックプレッシャの処理が容易になり、高度に動的な設定でリソースを効率的に使用できるようにする、データフロープログラミングのバリアントを利用します。ノンブロッキング通信。

イベント駆動型アーキテクチャ

イベント駆動型アーキテクチャーは、特定のアプリケーションの有用性が高まっていることから特定の人々が特定した、アーキテクチャパターンをやや曖昧に定義した包括的な用語です。この場合、概念は主に、エンタープライズソフトウェアのコミュニティで出現したパターンに由来します。このパターンでは、マイクロサービスが分解および展開パターンとして出現し、特定の組織的な利点を提供します。つまり、大規模プロジェクト内で作業を分散するのに役立ちます。

オブジェクト指向プログラミングなどのソフトウェア開発における多くの古典的な概念は、イベント駆動型と見なすことができます-アクター間の通信はイベントと見なすことができます-特に、現在イベントとして理解されているのは、イベントを基本的なビルディングブロックと見なすことによるアプリケーション設計のこの化身ですイベント駆動型。イベントソーシングやCQRSなどのこの基本的な考え方を拡張するいくつかのパターンという用語を人々がしばしば使用し、特定のアプリケーションにとって現在有益であると思われるいくつかの利点を提供します。

比較

対照的に、両方の概念の中心には、コンポーネントを分離するための非同期通信があります。イベントとメッセージは関連する概念であり、主に各用語で強調される意図が異なります。そのため、これらは両方の概念の共通の要素です。厳密な意味で、今日、イベント駆動型であることは、応答性を保つための前提条件です。個人的には、他のパラダイムが出現して、兵器システムの望ましい行動特性を実現する可能性があると想像できます。

リアクティブマニフェストは、システムが実行時に動作し、動的に応答する方法に関連する上記の品質属性を強調していますが、イベント駆動型アーキテクチャは、システムの分解方法とそのパーツの一般的な相互作用に焦点を当てています。この意味で、リアクティブシステムの視点は、その内部動作に関連する特定のプロパティを想定しているにもかかわらず、かなり行動主義的な視点ですが、私の印象は、これらの内部プロパティは本質的に偶発的である可能性があるということです。手段。

現在、各概念はソフトウェアシステムに対して異なる視点を持ち、異なる典型的な関連付けのセットが付属し、異なる側面を強調し、異なる目標の達成に焦点を当てています。しかし、それらはおそらく再考され続け、概念が進化するにつれて発散または収束する可能性があります。

1
Hyggenbodden