Sitecore - Helix Konventionen

Um die Thematik von Helix zu verstehen muss man sich zuerst mit den verschiedenen Konventionen befassen, auf diese werde ich in diesem Beitrag eingehen. Ich kann allen Lesern die Helix Dokumentation empfehlen http://helix.sitecore.net, dieses bietet eine sehr gut aufbereitete und strukturierte Übersicht.

Wo ist Helix einzuordnen

  • Principles: Tells you why
  • Conventions: Tells you how [Helix]
  • Examples: Shows you [Habitat]
  • Tools: Guides you [Build Scripts, TDS, SxA]

Helix beeinhaltet Module und Layer, Module sind daher immer Bestandteil genau eines Layers.

Module 1

Ihr kennt es "Alles in Sitecore ist ein Item", ebenso verhält es sich mit Helix "Alles in Helix ist ein Module", ein Modul umfasst hierbei alles was wir benötigen um eine Funktion gesammelt auszuliefern. Dies kann sein: Templates, Layouts, Konfigurationen, Code und Tests und weitere Bestandteile.

In der Struktur von Habitat2 lässt sich dieser Aufbau in modulare Bestandteile sehr gut erkennen.
.

Layer

Sitecore verteilt die verschiedenen Module in Layer, wobei diese Layer folgende Konventionen definieren

  • Layer definieren die minimale Stabilität der Module innerhalb dieser Layer
  • Layer steuern die Richtung der Abhängigkeiten (Stable- Dependency Principle)
  • Layer definieren die Konventionen was genau ein Module beeinhalten darf (Stable - Abstracton Principle)

Es sind 3 Layer definiert, wichtig ist zu Wissen das diese Layer nicht einer Tier-3 Struktur entsprechen. Sie dienen lediglich der Darstellung der Abhängigkeiten und zur einteilung der Konventionen.

Dependencies gehen absteigend vom Project Layer hin zum Foundation Layer.

Project Layer
Feature Layer
Foundation Layer

Foundation Layer 3

Dieser Layer ist der stabilste Layer in der Helix Architektur und definiert das sogenannte Framework.

Habitat Beispiele:

  • Indexing
  • Forms
  • Serialization
  • Sitecore Extensions
  • Theming

Foundation Layer Module liefern geteile Logik an die Feature Layer Module.
Die Module müssen daher so abstrakt wie möglich sein, da dieser Layer auf die anderen den größten Einfluss hat, zum Beispiel bei Änderungen an einem dieser Foundation Layer Module.

Alle Module werden für die Kundenanforderungen gebaut nicht für die Wiederverwendung. Weiterhin beeinhaltet dieser Layer keine Rendering oder Presentation Komponenten.

Feature Layer 4

Der Feature Layer beeinhaltet Module die von den Redakteuren genutzt und von den Kunden verstanden werden. Anders formuliert, dieser Layer beeinhaltet alles das was der Kunde in seinem täglichen arbeiten mit dem System nutzt.
Aus Entwicklungssicht muss dieser Layer simpel und wartbar bleiben.

Habitat Beispiel:

  • FAQ
  • Maps
  • Media
  • Navigation
  • News
  • Search
  • Social

The Feature layer contains concrete features of the solution as understood by the business owners and editors of the solution, for example news, articles, promotions, website search etc. Source: Sitecore Documentation

Jedes dieser Module beeinhaltet dann alles was zu eben genau diesem Modul gehört.

Ein Feature Layer Modul hat hierbei niemals eine Abhängigkeit zu einem anderen Feature Layer Modul. Die einzig erlaubte Abhängigkeit ist die zu einem Foundation Layer Module.

Eine Auflistung könnt Ihr auch direkt auf dem Habitat GitHub5 Projekt anschauen

Project Layer

Der Project Layer ist der instabilste Layer und umfasst konkrete Implementierungen, wie Seitentypen oder Layouts. Beeinhaltet jedoch niemals Business Logic. Dieser Layer wird auch genutzt um den Zusammenhang zwischen verschiedenen Feature Layern herzustellen.

Habitat Beispiel:

  • Habitat Seitentypen
  • Demoseiten
  • Common Bestandteile die Seitenübergreifend genutzt werden können

Fazit

Sitecore fasst sehr gut zusammen was Helix nicht ist

  • Helix ist keine System Architektur
  • Helix ist kein Software Design Pattern
  • Helix hat nichts mit Wiederverwendung zu tun