Show Menu
トピック×

コンテンツのアーキテクチャ

David's Model に準拠

David's Model は何年も前に David Nuescheler によって作成されたものですが、その考え方は今でも当てはまります。Davidのモデルの主な特徴は次のとおりです。
  • データが最初に来て、後で構造が始まります。 多分。
  • コンテンツ階層は手動で設計し、成り行き任せにしない。
  • ワークスペースは、、 clone() および merge() 用で update() す。
  • 同じ名前の兄弟に注意する。
  • 参照は害が多いと考えられる。
  • ファイルはあくまでもファイル。
  • 身分証明書は悪い。
David’s Model can be found on the Jackrabbit wiki at https://wiki.apache.org/jackrabbit/DavidsModel .

すべてがコンテンツである

あらゆるデータの格納には、データベースなど別個のサードパーティデータソースを利用するのではなく、リポジトリを使用する必要があります。このことは、作成済みコンテンツ、バイナリデータ(画像など)、コード、設定などに当てはまります。このようにすると、1 つの API セットを使用してすべてのコンテンツを管理でき、レプリケーションによってこのコンテンツのプロモーションを管理できます。また、バックアップやログの単一ソースを得ることができます。

「コンテンツモデルが第一」というデザインの原則の使用

新機能をビルドするときには、常に JCR コンテンツ構造の設計から始め、次にデフォルトの Sling サーブレットを使用したコンテンツの読み込みおよび書き込みに進みます。これにより、お使いの実装が初期設定のアクセス制御メカニズムと適切に機能し、不要なCRUDスタイルのサーブレットを生成しないようにすることができます。

RESTful に準拠

サーブレットをパスではなく resourceType に基づいて定義する必要があります。これにより、JCRアクセス制御を使用し、REST原則に従い、リクエストで提供されるリソースとリソースリゾルバーを使用することが可能になります。 また、クライアント側からURLを変更する必要なく、サーバー側でURLをレンダリングするスクリプトを変更できます。また、セキュリティを強化するために、クライアント側からサーバー側の実装の詳細を非表示にできます。

新しいノードタイプの定義を回避

ノードタイプはインフラストラクチャレイヤー内の下位レベルで機能し、ほとんどの要件は nt:unstructured、oak:Unstructured、sling:Folder または cq:Page のノードタイプに割り当てられた sling:resourceType を使用することで満たすことができます。ノードタイプはリポジトリ内のスキーマと同じで、ノードタイプの変更は将来的に非常に高コストになる可能性があります。

JCR の命名規則に準拠

命名規則に準拠することにより、コードベースの一貫性が高まるので、不具合の発生率を低下させ、システムで作業する開発者の生産性を高めることができます。AEMの開発では、次の規則を使用します。
  • ノード名
    • すべて小文字
    • 単語間の区切りにハイフンを使用
  • プロパティ名
    • キャメルケース、小文字で開始
  • コンポーネント(JSP/HTML)
    • すべて小文字
    • 単語間の区切りにハイフンを使用