プラグインアーキテクチャのメリットとデメリット【アーキテクチャ詳細】
Sal
inhouse_se マイクロカーネルアーキテクチャは別名、プラグインアーキテクチャと呼ばれている。システムは「コアシステム」「プラグインコンポーネント」の二種類から成り立ち、中央集約型の「コアシステム」に対して「プラグインコンポーネント」を取り付ける形で構成される。

プラグインアーキテクチャのメリットとデメリット【アーキテクチャ詳細】

  1. 概要
  2. コアシステム
  3. プラグインコンポーネント
  4. プラグインコンポーネントの存在認知
  5. メリット
  6. まとめ
  7. 備考
## 概要
マイクロカーネルアーキテクチャは別名、プラグインアーキテクチャと呼ばれている。 システムは「コアシステム」「プラグインコンポーネント」の二種類から成り立ち、 中央集約型の「コアシステム」に対して「プラグインコンポーネント」を取り付ける形で構成される。 コアシステム本体は場合によってはレイヤードアーキテクチャにもなる コアシステムのアーキテクチャ例1 例2
## コアシステム
コアシステムはシステムの実行に必要な最小限の機能 コアシステムはシンプルな構成にし、それ以外の余分な機能をその他のコンポーネントに任せることで、 拡張性と保守性が向上し、テスト性が向上します 以下の例ではデバイスごとに設定されたメソッドgetConstructorを DevicePluginを用いて本体であるマイクロカーネルからの呼び出しを可能にしている

public void assessDevice(String deviceID) {	
    String plugin = pluginRegistry.get(deviceID);	
    Class theClass = Class.forName(plugin);	
    Constructor constructor = theClass.getConstructor();
    DevicePlugin devicePlugin = (DevicePlugin)constructor.newInstance();
    DevicePlugin.assess();
}
## プラグインコンポーネント
プラグインコンポーネントはスタンドアローンで、独立している。 コアシステムを拡張または拡張することを目的とした、特殊な処理、追加機能、およびカスタムコードを含むコンポーネントです さらに、これらを使用して揮発性の高いコードを分離し、アプリケーション内の保守性とテスト性を向上させることができます。 理想的には、**プラグインコンポーネントは互いに独立しており、それらの間に依存関係がない必要があります。** ポイントツーポイントプラグインコンポーネントは、共有ライブラリ(JAR、DLL、Gemなど)、Javaのパッケージ名、またはC#の名前空間として実装できます。 プラグインコンポーネントは、必ずしもコアシステムとのポイントツーポイント通信である必要はありません。 プラグイン機能を呼び出す手段としてRESTまたはメッセージングを使用するなど、他の選択肢もあります。 各プラグインはスタンドアロンサービス(またはコンテナを使用して実装されたマイクロサービス)です。 プラグインコンポーネントがデータベースにアクセスすることは一般的にはありえない。 ただし、それぞれのプラグインコンポーネントがデータベースを持つことはあり得る。
## プラグインコンポーネントの存在認知
プラグインを利用するためには、まずそのプラグインが存在していることを把握しなければなりません。 そのためには次の方法が考えられれます。 ・レジストリへの登録 ・サードパーティ性のライブラリとしての運用
## メリット
プラグインアーキテクチャは、Visual Studio CodeやEclipseなど、開発者向けのツールでよく使用される。 ソフトのサイズを抑え、余分な機能を削ぎ落とすことに特化している機能でもある。 具体例では、**請求書作成アプリケーション**などが当たる。 米国の請求書の税率は週ごとに異なり、またその週の中でも細かくルールを定められていることがある。 このような場合にif文を使った条件分岐を行うことは、ソースの泥団子化を引き起こしかねない。 そのような場合に「各州の情報を定めたクラスを作成し、外部のプラグインコンポーネントとして扱うことで、システムの健全性を保つことができる」
## まとめ
総評は以下の通り
## 備考
title:プラグインアーキテクチャのメリットとデメリット【アーキテクチャ詳細】 description:マイクロカーネルアーキテクチャは別名、プラグインアーキテクチャと呼ばれている。システムは「コアシステム」「プラグインコンポーネント」の二種類から成り立ち、中央集約型の「コアシステム」に対して「プラグインコンポーネント」を取り付ける形で構成される。 category_script:page_name.startswith("2") img:https://camo.githubusercontent.com/a867bf149f55ee6f496db5243b2b7b6dba7211264ed2d3199ded869ed609dfbe/68747470733a2f2f6c6561726e696e672e6f7265696c6c792e636f6d2f6c6962726172792f766965772f66756e64616d656e74616c732d6f662d736f6674776172652f393738313439323034333434372f6173736574732f666f73615f313230312e706e67