Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Architekturüberblick

Die Schichten einer Exponential-Installation und wofür jede verantwortlich ist - Server, die Einstiegspunkte des Kernels, die Domänenklassen, die Bibliotheken, die Darstellungsschicht, Erweiterungen, Einstellungen und…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/software-engineers/architecture-overview.md

On this page

This page is a translation. Read the English original

Architekturüberblick

Diese Seite ist die Landkarte einer Exponential-Installation für Ingenieure: welche Schicht was tut, wo sie auf der Festplatte liegt und welche Architekturentscheidungen alles andere prägen. Die maßgebliche Beschreibung, mit einer Regel für jeden Baustein, ist Kernel-Architektur; diese Seite fasst sie zusammen und ergänzt die Begründungen.

Inhalt

  1. Die Schichten
  2. Der Verzeichnisaufbau
  3. Fünf Architekturentscheidungen
  4. Wo Zustand liegt
  5. Was die Architektur nicht hat

Die Schichten

 Browser / CLI / cron
        |
 Server: Apache or nginx + PHP-FPM  |  Velocity (qbix)  |  FrankenPHP
        |
 Entry points: index.php  /  bin/php/console  /  runcronjobs.php
        |
 Kernel: ezpKernel -> ezpKernelWeb   settings -> extensions -> siteaccess -> session -> module
        |
 Modules and views: eZModule::run() -> view class  (kernel/<module>/, extensions)
        |
 Domain: kernel/classes  (content, users, roles, datatypes, workflows, caches)
        |
 Libraries: lib/ezdb (eZDB), lib/eztemplate (eZTemplate), lib/ezutils (eZINI, eZSys, ...)
SchichtVerantwortungWichtige Klassen
Serverdie Verbindung annehmen, statische Dateien ausliefern, PHP ausführenVelocity, PHP-FPM, FrankenPHP (Anwendungsserver)
Einstiegspunkteden richtigen Kernel für Web, Konsole oder Cron startenindex.php, bin/php/console, runcronjobs.php, eZScript
KernelEinstellungen, Erweiterungen, Siteaccess, Session, WeiterleitungezpKernel, ezpKernelWeb, eZSiteAccess, eZExtension
Module und ViewsURL-Namensräume und Seiten, BerechtigungsprüfungeneZModule, Exponential\Runnable\ModuleView
DomäneInhalte, Benutzer, Rollen, Datentypen, Workflows, Benachrichtigungen, CacheseZContentObject, eZContentObjectTreeNode, eZUser, eZRole, eZDataType, eZCache
BibliothekenDatenbank, Templates, Einstellungen, Dateien, Gebietsschema, E-MaileZDB, eZTemplate, eZINI, eZClusterFileHandler, eZLocale
DarstellungTemplates, Designs, Overridesdesign/<design>/templates, override.ini
Erweiterungenalles, was eine Installation hinzufügtextension/<name>/

Der Verzeichnisaufbau

Aus dem Installationsbuch (1.2 Die Teile einer Installation):

kernel/, lib/      the kernel: modules, classes, the template engine, the database layer
autoload/          the kernel's class map (autoload/ezp_kernel.php)
extension/         extensions: your application lives here
design/            designs: templates, stylesheets, images
settings/          shipped settings; settings/siteaccess/ and settings/override/ hold yours
var/               runtime: caches, logs, storage, the SQLite database
bin/php/console    one entry point for every command
cronjobs/          the scripts runcronjobs.php runs
index.php          the front controller

Fünf Architekturentscheidungen

  1. Ein Front-Controller, eine Weiterleitungsschleife. Jede Webanfrage läuft über index.php und ezpKernelWeb::run(); für normale Seiten gibt es keinen zweiten Web-Einstiegspunkt. Besondere Einstiegspunkte gibt es für REST (index_rest.php), das Baummenü (index_treemenu.php) und die Auslieferung von Dateien im Cluster (index_cluster.php).
  2. Der Siteaccess ist die Einheit der Konfiguration. Ein Siteaccess ist eine benannte Konfiguration, die je Anfrage gewählt wird (eine Website, die Administration, eine Sprache); die meisten Verhaltensunterschiede sind Einstellungen, kein Code (Siteaccesses und Konfiguration).
  3. Alles Austauschbare wird in Einstellungen benannt. Module, Datentypen, Workflow-Events, Template-Operatoren, Cronjob-Teile, Benachrichtigungs-Handler, Login-Handler und Cluster-Datei-Handler werden über INI-Listen gefunden; eine Erweiterung klinkt sich also ein, indem sie eine Klasse und eine Datei .ini.append.php mitliefert (Events, Erweiterungspunkte und Plugins).
  4. Ein zur Laufzeit festgelegtes Inhaltsmodell. Inhaltsklassen sind Daten, kein Code: Administratoren fügen Klassen und Attribute ohne Bereitstellung hinzu, und Datentypen geben jedem Attribut Speicherung, Prüfung und Templates (Das Inhaltsmodell für Ingenieure).
  5. Alle Cache-Dateien über den Cluster-Datei-Handler. Caches werden über eZClusterFileHandler geschrieben, sodass derselbe Code auf einer Festplatte oder auf gemeinsamem Speicher für mehrere Webknoten läuft (Skalierung und Clustering).

Wo Zustand liegt

ZustandWoZwischen Webknoten geteilt
Inhalte, Benutzer, Rollen, URL-Aliasedie Datenbankja
Hochgeladene Dateien und Bildvariantenvar/<site>/storage (oder das Cluster-Backend)muss sein
Cachesvar/<site>/cache oder Redis bzw. Valkey mit sevenx_valkey_cachehängt vom Cache ab (Caching-Ebenen für Ingenieure)
Sessionsder Session-Speicher von PHP oder die Tabelle ezsession mit ezpSessionHandlerDBmuss sein, bei mehreren Knoten
Logs und Audit-Einträgevar/log, var/<site>/logje Knoten, sofern nicht eingesammelt
Einstellungensettings/, settings/ der Erweiterungenmit dem Code bereitgestellt

Was die Architektur nicht hat

  • Keinen eigenen Dependency-Injection-Container. Klassen werden über die Klassenzuordnung und Einstellungen gefunden; Singletons wie eZINI::instance() und eZDB::instance() sind die Regel. Läuft der Kernel innerhalb von Symfony, geben ezpKernel::hasServiceContainer() und getServiceContainer() Zugriff auf den Container von Symfony.
  • Upgrade-Schritte und Migrationen, von der Konsole. Datenbankaktualisierungen des Kernels und der Erweiterungen sind Upgrade-Schritte, die exp:upgrade anwendet und festhält; die eigenen Änderungen einer Site sind Migrationen, die exp:migration:migrate der Reihe nach ausführt und in exp_migration festhält (Schemaänderungen und Migrationen, Migrationen).
  • Keinen Message-Broker im Kernel. Hintergrundarbeit läuft als Cronjob-Teile, Inhaltsjobs und über die Erweiterung expqueue (Konsole, Cronjobs und Hintergrundarbeit).
  • Kein Symfony im Kernel. Die Produkte der Symfony-Plattform betten den Kernel über die Legacy Bridge ein (Symfony und die Legacy Bridge).

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x