アーキテクチャー
Liferay DXP/Portalのアーキテクチャには、次の3つの部分があります。
-
コア: Bootstraps DXP とその フレームワーク。 コアは、サービス、UIコンポーネント、およびカスタマイゼーションを管理するためのランタイム環境を提供します。
-
サービス:Java APIおよびWeb APIを介してDXP機能とカスタム機能を公開します。
-
UI:ポータル、サイト、ページ、ウィジェット、およびコンテンツを追加するためのオプションのWebアプリケーションUI。
UI とサービスを一緒に使用することも、 REST API または GraphQL API経由のサービスの使用のみに集中することもできます。

アーキテクチャは次の要件を満たしています。
- 一般的な開発技術の使用をサポート
- 開発基準を活用する
- コンポーネントの交換を容易にする
- 起動が速く、パフォーマンスも優れている
- ランタイムの構成と検査が容易
コアは、UIとサービスの展開をサポートし、それらを相互に接続するように調整します。
コア
DXPは、アプリケーションサーバー上で実行されるWebアプリケーションです。 Core はアプリケーションとその フレームワークをブートストラップします。
次のようなフレームワークがあります。
- アダプティブメディア
- アプリケーション設定
- アプリケーションのセキュリティ
- アセット
- キャッシュ
- データスコープ
- 依存性注入
- 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 ビルダーを使用して RESTful になります。 サービスは簡単に オーバーライドしたり 拡張したりすることもできます。
WebベースのUIにより、コンテンツとサービスの機能がブラウザで利用できるようになります。
UI
UI は、人々が仕事をしたり、 共同作業を行ったりコンテンツを楽しんだりするのに役立ちます。 UIの構成は以下の通りです。
-
DXP アプリケーション: ポータル、サイト、ユーザー、ページ、ウィジェットなどを管理するための Web アプリケーション。
-
アプリケーション: すでにデプロイされているサービスのユーザー インターフェイスを提供するウィジェット。
-
テーマ: ユニークな外観と雰囲気でサイトをスタイリングするためのプラグイン。
ご覧のとおり、このアーキテクチャは、サービス、UIコンポーネント、およびカスタマイゼーションの開発をサポートしています。 アーキテクチャのセクションでは、コア、サービス、およびUIのトピックについて説明します。 次に、クラスローディングやモジュール性など、コアについて詳しく説明します。