アーキテクチャ
Liferay DXP/Portalのアーキテクチャには、次の3つの部分があります。
-
コア: DXPとそのフレームワークをブートストラップします。 コアは、サービス、UIコンポーネント、およびカスタマイゼーションを管理するためのランタイム環境を提供します。
-
サービス: Java APIおよびWeb APIを介してDXP機能とカスタム機能を公開します。
-
UI: ポータル、サイト、ページ、ウィジェット、およびコンテンツを追加するためのオプションのWebアプリケーションUI。
UIとサービスを一緒に使用することも、REST APIもしくはGraphQL APIを介したサービスの利用のみに集中することもできます。
アーキテクチャは次の要件を満たしています。
- 一般的な開発技術の使用をサポート
- 開発基準を活用する
- コンポーネントの交換を容易にする
- 起動が速く、パフォーマンスも優れている
- ランタイムの構成と検査が容易
コアは、UIとサービスの展開をサポートし、それらを相互に接続するように調整します。
コア
DXPは、アプリケーションサーバー上で実行されるWebアプリケーションです。 コアは、アプリケーションとそのフレームワークをブートストラップします。
次のようなフレームワークがあります。
- アダプティブメディア
- アプリケーション設定
- アプリケーションのセキュリティ
- アセット
- キャッシュ
- データスコープ
- 依存性注入
- Expando/カスタム属性
- ファイル管理
- ローカライズ
- ロギング
- メッセージバス
- スケジューラー
- 検索
- セグメンテーションとパーソナライゼーション
- サービスビルダー
- テスト
- アップグレードのプロセス
- ウイルス対策
- ワークフロー
コアは、フレームワーク、サービス、およびUIのコンポーネントランタイム環境を提供します。 コンポーネントの例を次に示します。
- サービス
- サービスのカスタマイゼーション
- 言語キー\(ローカライズされたメッセージ\)
- JavaScriptアプリケーション\(テンプレート、ルーター、およびリソース\)
- JSPのカスタマイゼーション
- ポートレット\(テンプレート、コントローラー、およびリソース\)
- ポートレットフィルター
- テーマ
次の図は、ランタイム環境でのこれらのコンポーネントタイプを示しています。
ランタイム環境は、コンポーネントのオンザフライでの追加、置換、およびカスタマイズをサポートしています。 これにより、次のシナリオが可能になります。
置換: ServiceC Impl 2
コンポーネントのランクが既存のコンポーネントServiceC Impl 1
よりも高い場合、ServiceC Impl 2
が使用されます。
カスタマイゼーション: PortletAフィルター
は、PortletA
で行われる要求と応答をインターセプトして変更し、PortletA
が表示するコンテンツに影響を与えます。
コンポーネントWARおよびモジュールJARプロジェクトは、 OSGiバンドル (モジュール)としてインストールされます。 LiferayのOSGiフレームワークは、モジュールのライフサイクルを定義し、依存関係を適用し、クラスの読み込み構造を定義し、モジュールとコンポーネントを管理するためのAPIとCLI(Felix Gogo シェル)を提供します。 コアは、ポータルプロパティファイルとシステム設定を介して構成されます。
サービスコンポーネントはビジネス機能を提供します。
サービス
ビジネスロジックは、コンポーネントランタイム環境にデプロイされたサービスに実装されます。 組み込みのコアサービスとフレームワークサービスは、ユーザー、ロール、Webコンテンツ、ドキュメントとメディアなどのモデルで動作します。 カスタムサービスを通じて新しいモデルと機能を導入できます。 サービスコンポーネントは、依存性注入を介して相互にアクセスできます。
フロントエンドアプリケーションは、サービスを呼び出して作業を行います。 Java APIを使用してサービスを直接呼び出すJavaベースのアプリケーションをデプロイすることができます。 DXPにデプロイされているかに関係なく、Webベース(Javaおよび非Java)のアプリケーションであれば、 OpenAPI 標準に準拠したREST API、GraphQL API、シンプルなWeb/RESTサービスを含むWeb APIを利用できます。 次の図は、Liferayサービスを呼び出すアプリケーションと外部クライアントを示しています。
Liferayサービスは、 サービスビルダー を使用して構築され、REST Builderを使用してREST-fulになります。 サービスは簡単にオーバーライドしたり拡張することもできます。
WebベースのUIにより、コンテンツとサービスの機能がブラウザで利用できるようになります。
UI
UIは、ユーザーが仕事をしたり、コラボレーションしたり、コンテンツを楽しんだりするのに役立ちます。 UIの構成は以下の通りです。
-
DXPアプリケーション:ポータル、サイト、ユーザー、ページ、ウィジェットなどを管理するためのWebアプリケーション。
-
アプリケーション:すでにデプロイされているサービスのユーザーインターフェイスを提供するウィジェット。
-
テーマ:サイトを独自のルック&フィールでスタイリングするためのプラグイン。
UIアーキテクチャの記事では、UIコンポーネントの開発とカスタマイズについて詳しく説明しています。
ご覧のとおり、このアーキテクチャは、サービス、UIコンポーネント、およびカスタマイゼーションの開発をサポートしています。 アーキテクチャのセクションでは、コア、サービス、およびUIのトピックについて説明します。 次に、クラスローディングやモジュール性など、コアについて詳しく説明します。 必要に応じて、サービスや UIアーキテクチャ のトピックにジャンプして進むことができます。 アーキテクチャについてさらに探究してください。