Hier geben wir Einblicke in das Unternehmen, Gedanken, How-Tos, Wissenswertes und News, die sich aus der Programmierung und Projekten ergeben. Auch unsere Open Source Aktivitäten begleiten wir hier.

Corporate Blog der prooph software GmbH

prooph Bundle für Symfony Anwendungen

prooph components Open Source PHP Library

Viele Frameworks und Bibliotheken setzen auf den Container-Interop Standard, wenn es um das Konfigurieren/Erstellen von Instanzen über Factory-Klassen geht. Auch die Open Source PHP Library prooph components nutzt diesen Standard, um nicht von einem Framework Container abhängig zu sein und die größtmögliche Interoperabilität zu gewährleisten. Dieser Beitrag stellt das prooph Symfony Bundle vor, das durch Container-Interop die prooph components in Symfony integriert.

prooph Symfony Interop Bundle

Die prooph components besitzen frameworkunabhängige Factory-Klassen nach dem Container-Interop Standard. Deshalb war es zunächst notwendig, dass der Symfony Container mit dem Container-Interop standardkonform ist. Hierfür wurde einfach eine Container Wrapper Klasse erstellt und in dem Symfony Container als Service interop_container registriert. Dadurch ist es möglich, eigene Services mit Container-Interop Factory-Klassen im Symfony Container zu registrieren. Anstatt die Factory-Klassen mit dem Symfony Container aufzurufen, wird die Wrapper Klasse mit dem Service-Namen interop_container den Factory-Methoden übergeben. Es folgt ein Symfony Container XML Beispiel:

<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
    <services>

        <service id="Prooph\ProophessorDo\Projection\User\UserFinder.factory"
                 class="Prooph\ProophessorDo\Container\Projection\User\UserFinderFactory"/>
                 
        <service id="Prooph\ProophessorDo\Projection\User\UserFinder" class="Prooph\ProophessorDo\Projection\User\UserFinder">
            <factory service="Prooph\ProophessorDo\Projection\User\UserFinder.factory" method="__invoke"/>
            <argument type="service" id="interop_container"/>
        </service>

    </services>
</container>

Als erstes wird die UserFinder Factory als Service im Symfony Container registriert. Der UserFinder Service wird anschließend über diese Factory erstellt. Wie man sieht, wird der __invoke() Methode der Factory nicht der Symfony Container übergeben, sondern der Container-Interop Container.

Es hat sich als Best Practice durchgesetzt, dass die Anwendungs-Konfiguration unter dem Service-Namen config in dem Service Container zur Verfügung gestellt wird. Dadurch können die Factory-Klassen alle relevanten Informationen laden, die sie benötigen und auch andere Services (Dependency Injection) nutzen.

Das prooph-interop-bundle ist universell einsetzbar. Jede Symfony Anwendung ist damit in der Lage, Container-Interop Factories zu nutzen. Natürlich kann auch ein Service-Alias vergeben werden, falls die vorhandenen Service-Namen anders lauten sollen. Weitere Informationen befinden sich auf der Projektseite.

prooph Symfony Bundle

Um einen schnellen und einfachen Einstieg in die Open Source PHP Library prooph components und somit zu Service Bus und Event Sourcing zu bieten, wurde ein vorkonfiguriertes Symfony Bundle für die prooph components erstellt. Dort sind alle relevanten Services registriert und miteinander verknüpft. In diesem Symfony Bundle wird Doctrine DBAL als Persistenz-Adapter benutzt. Es stehen aber auch weitere Adapter zur Verfügung.

prooph components Systemarchitektur

prooph components Systemarchitektur

Die prooph components bestehen aus den zwei Hauptkomponenten prooph Service Bus und prooph Event Store. Diese können auch einzeln und in Kombination mit anderen Bibliotheken benutzt werden. Mit dem prooph Service Bus können Anwendungen, IT-Systeme und interne wie auch externe Services über eine Messaging-Infrastruktur, auch Enterprise-Service-Bus (ESB) genannt, vernetzt werden. Der prooph Service Bus schafft damit neue Möglichkeiten für Schnittstellen und automatisierte Prozesse. Letzteres ist besonders interessant für das Business, da automatisierte Prozesse helfen, Kosten zu sparen und mit dem rasanten Entwicklungstempo Schritt zu halten.

Der prooph Event Store speichert alle wichtigen Ereignisse der Anwendung. Einmal gespeicherte Events werden nicht mehr gelöscht, denn auch im realen Leben lässt sich die Vergangenheit nicht ändern. Diese, im ersten Moment ungewohnte, Art der Datenspeicherung ebnet den Weg für detaillierte Daten- und Ereignis-Analysen. So lässt sich der Lebenszyklus eines Produkts von der Produktion bis hin zum Verkauf in der Filiale oder im Online Shop aufzeichnen. Dem Business Intelligence Team bieten sich dadurch umfangreiche Möglichkeiten der Datenanalyse vergleichbar mit google analytics. Ein weiterer positiver Effekt an diesem Vorgehen ist die Geschwindigkeit (Stichwort: Live Tracking). Da Daten nur angehängt werden, entfallen Update- oder Delete-Operationen und der Entwickler bekommt gleichzeitig noch ein automatisches Logging spendiert.

Um diese beiden Hauptkomponenten sind verschiedene Adapter und Bridges versammelt. Dadurch können sich die prooph components mit verschiedenen Datenbank- und Messaging-Systemem verbinden oder neue Systeme integrieren. Auch hier befinden sich auf der Projektseite weitere Informationen.

Fazit

Die Open Source PHP Library prooph components ergänzt eine Web Applikation um Messaging und Event Logging Funktionalität. Das steigert die Performance, erhöht die Skalierbarkeit und ermöglicht neue Real-Time Daten-Analysen. Symfony ist ein bekanntes Web Application Framework. Mit dem prooph Symfony Bundle erleichtern wir Entwicklern die Integration der prooph components in Symfony Anwendungen.

PHP, Symfony, prooph Für die prooph components bieten wir Support und stehen Ihnen gerne beratend zur Seite bei der Einbindung der prooph components in Ihre Symfony Anwendung. Gerne übernehmen wir für Sie auch die Entwicklung eines Service Bus Systems sowie Event Sourcing für Ihre Symfony Anwendungen. Die prooph software Gmbh ist spezialisiert auf verteilte und serviceorientierte Systeme.

Sie suchen einen Symfony Dienstleister für Ihr Projekt: Projektanfrage stellen

Blog Artikel mit ähnlichen Themen