{"id":10747,"date":"2021-08-25T11:17:01","date_gmt":"2021-08-25T09:17:01","guid":{"rendered":"https:\/\/www.gambio.de\/blog\/?p=10747"},"modified":"2021-09-03T09:55:40","modified_gmt":"2021-09-03T07:55:40","slug":"neue-architektur-und-konzepte-zu-gx-v4-5-2","status":"publish","type":"post","link":"https:\/\/www.gambio.de\/blog\/neue-architektur-und-konzepte-zu-gx-v4-5-2\/","title":{"rendered":"Neue Architektur und Konzepte zu GX v4.5"},"content":{"rendered":"<p>Das Release der kommenden Feature-Version GX 4.5 steht demn\u00e4chst an und aus diesem Anlass m\u00f6chten wir euch einige Ver\u00e4nderungen hinsichtlich der Software-Architektur und neue Konzepte f\u00fcr die zuk\u00fcnftige Shop-Entwicklung aufzeigen bzw. vorstellen.<!--more--><\/p>\n\n<h2>Das Warum<\/h2>\n<p>Zun\u00e4chst jedoch ein paar Worte zu dem Warum, um das Ganze etwas greifbarer zu machen (auch f\u00fcr die Nicht-Entwickler ;-)). Wie einige vielleicht wissen, basiert die Gambio Shopsoftware auf einen Fork einer recht alten Version von xt:Commerce. Es ist also so, dass sich unsere Shopsoftware von der Open-Source-Software xt:Commerce abgespalten hat und ihren eigenen Weg gegangen ist.<\/p>\n<p>Dieser Ursprung ist der Grund daf\u00fcr, warum auch jetzt noch einige Teile unserer Software auf den alten Quellcode von xt:Commerce basieren, welche mit den vielen Jahren eben nicht sehr gut gealtert sind. In der Software-Entwicklung ist es kein ungew\u00f6hnliches Leid und wir haben \u00fcber die Jahre schon h\u00e4ufiger Teile der Basis verbessert. Nun haben wir uns vor knapp einem Jahr dazu entschlossen, einen kompletten Umbruch zu starten und uns komplett von dieser alten Basis zu trennen. Hierbei handelt es sich durchaus um eine anspruchsvolle Zielsetzung, f\u00fcr die wir einige Zeit ben\u00f6tigen werden, jedoch sind die damit verbundenen Vorteile enorm wichtig f\u00fcr die zuk\u00fcnftige Entwicklung der Shopsoftware.<\/p>\n<h2>Die Vision<\/h2>\n<p>Doch kommen wir von dem Warum nun zu der Vision einer neuen Softwarearchitektur und den neuen Konzepten f\u00fcr die Entwicklung innerhalb der Shopsoftware. Die Basis einer guten Software ist ein Fundament, bestehend aus Konzepten und Regeln, die beschreiben, wie die Software grunds\u00e4tzlich aufgebaut und weiterentwickelt werden kann. Diese Basis ist vergleichbar mit dem Grundriss eines Geb\u00e4udes, das von einem Architekten angefertigt wird. Denn so wie man dem Grundriss eines Geb\u00e4udes entnehmen kann, wo welche Leitungen, Fenster, T\u00fcren, etc. verlegt werden m\u00fcssen, so kann man einer Softwarearchitektur entnehmen, wie einzelne Bestandteile zusammenarbeiten und wie man diese Software pflegen und erweitern kann.<\/p>\n<p>Wir haben vor knapp \u00fcber einem Jahr damit begonnen, eine neue Basis f\u00fcr die Shopsoftware zu entwickeln, wobei wir uns zun\u00e4chst auf den Gambio Admin beschr\u00e4nkt hatten. Resultate daraus sind z. B. die neuen Adminseiten f\u00fcr die Konfigurationen, Paketdienstleister oder das Dashboard. Alle diese Bereiche arbeiten bereits mit einer neuen Basis, die auch externen Modul-Entwicklern bereits zur Verf\u00fcgung steht. Wir gehen hierzu in einem neuen Abschnitt (GX4 Tutorials) in der <a href=\"https:\/\/developers.gambio.de\" target=\"_blank\" rel=\"noopener\">Entwicklerdokumentation<\/a> genauer ein. Nichtsdestotrotz m\u00f6chten wir hier ein paar dieser Konzepte grundlegend vorstellen.<\/p>\n<h2>Ein allgemeines Framework<\/h2>\n<p>In der Entwicklerdokumentation pr\u00e4gen wir den Begriff Application Core, welcher mehr oder minder die Basis f\u00fcr die gesamte Neuentwicklung ist. \u00dcber den sogenannten Application Core wird definiert, \u00fcber welche Seiten (bzw. aufrufbare URLs), Module, Komponenten und Schnittstellen die Shopsoftware verf\u00fcgt. Diese k\u00f6nnen sich dabei von Version zu Version oder durch die Installation von Modulen (z.B. \u00fcber den Gambio Store) ver\u00e4ndern, was also bedeutet, dass neue Adminseiten, Komponenten, Schnittstellen hinzukommen. Das Ganze l\u00e4sst sich mit einem Framework vergleichen, wobei nat\u00fcrlich auch bereits die alten bzw. zuvor bestehenden Schnittstellen und Komponenten als solches bezeichnet werden konnten.<\/p>\n<p>Hierdurch soll es zuk\u00fcnftig einfacher werden, Basis- bzw. Kern-Komponenten wie Caches oder Logging f\u00fcr die Modulentwicklung zu verwenden. Auch der Zugriff auf die Gesch\u00e4ftslogiken und Daten der Shopsoftware sollen einfacher werden. So entwickeln wir Schritt f\u00fcr Schritt neue (meist einheitliche) Schnittstellen, um an diese Informationen zu gelangen oder Gesch\u00e4ftsprozesse anzusto\u00dfen, wie zum Beispiel das Anlegen einer Bestellung.<\/p>\n<h2>Event-basiertes Reagieren auf Gesch\u00e4ftsprozesse<\/h2>\n<p>Im alten System bzw. der alten Architektur war es \u00fcblich, bestehende Funktionalit\u00e4ten durch sogenannte Overloads komplett oder teilweise zu \u00fcberladen. Dies wurde dann genutzt, um die Ausf\u00fchrung von Gesch\u00e4ftsprozessen ma\u00dfgeblich und sehr direkt zu beeinflussen.<\/p>\n<p>Dies ist grunds\u00e4tzlich eine sehr gewagte Form der Erweiterbarkeit, da bei Fehlern in Modulen nicht mehr die fehlerfreie Ausf\u00fchrung unserer eigenen Funktionen gew\u00e4hrleistet werden kann. Ein fehlerhaftes Modul kann schnell die komplette Shopsoftware negativ beeintr\u00e4chtigen.<\/p>\n<p>Um diesem Fall vorzubeugen, haben wir uns entschlossen, hier auf ein event-basiertes System zur\u00fcckzugreifen. Dies bedeutet, dass bestimmte Gesch\u00e4ftsprozesse sogenannte Events ausl\u00f6sen, auf die dann Module (sowohl von Gambio als auch von Dritt-Entwicklern) reagieren k\u00f6nnen. Das erlaubt dann Modulen eigene Gesch\u00e4ftslogiken auszuf\u00fchren.<\/p>\n<h2>Neue Frontend-Technologien<\/h2>\n<p>Auch hinsichtlich der Frontend-Technologien wie HTML, CSS und JavaScript haben wir uns f\u00fcr einige \u00c4nderungen entschieden. So haben wir f\u00fcr neue Adminseiten ein neues Layout angelegt, dass das alte Design der Adminseiten imitiert. Die zugrundeliegenden Styles und Skripte sind jedoch neu und wir verfolgen das Ziel zuk\u00fcnftig mehr auf ein aktuelles Bootstrap, natives JavaScript \u00fcber TypeScript und auf Vue.js zu setzen. Jedoch wollen wir hierzu derzeit noch nicht zu weit ins Detail gehen.<\/p>\n<h2>Ausblick<\/h2>\n<p>Wir hoffen, dass euch dieser kleine Einblick in die aktuelle Shopentwicklung gefallen hat und schauen auch mit gro\u00dfer Freude auf die zuk\u00fcnftigen Fortschritte, die wir bei der \u00dcberarbeitung der Shopsoftware machen werden. Es sollte jedoch auch f\u00fcr euch verst\u00e4ndlich sein, dass es sich hierbei um ein recht aufw\u00e4ndiges und zeitlich anhaltendes Projekt handelt, das uns alle noch einige Zeit begleiten wird.<\/p>\n<hr \/>\n<div class=\"alert alert-info\">\n<p>Um in Sachen Gambio und E-Commerce auf dem Laufenden zu bleiben, folgt uns bei <strong><a href=\"https:\/\/www.instagram.com\/gambio_shopsoftware\/\" target=\"_blank\" rel=\"noopener noreferrer\">Instagram <\/a><\/strong><\/p>\n<p>Selbstverst\u00e4ndlich findet ihr uns auch bei <strong><a href=\"https:\/\/www.facebook.com\/GambioGmbH\" target=\"_blank\" rel=\"noopener noreferrer\">Facebook <\/a><\/strong><\/p>\n<\/div>\n<p><strong>Mit Gambio ganz einfach noch heute den eigenen Onlineshop erstellen<br \/>\n<\/strong><\/p>\n<p><a class=\"btn btn-primary\" href=\"https:\/\/www.gambio.de\/testshop\" target=\"_blank\" rel=\"noopener noreferrer\" type=\"button\">Kostenlos testen<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das Release der kommenden Feature-Version GX 4.5 steht demn\u00e4chst an und aus diesem Anlass m\u00f6chten wir euch einige Ver\u00e4nderungen hinsichtlich der Software-Architektur und neue Konzepte f\u00fcr die zuk\u00fcnftige Shop-Entwicklung aufzeigen bzw. vorstellen.<\/p>\n","protected":false},"author":24,"featured_media":10749,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,3],"tags":[630,43,406,40,39],"class_list":["post-10747","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-allgemein","category-entwicklung","tag-architektur","tag-e-commerce","tag-entwicklung","tag-gambio","tag-shopsoftware"],"_links":{"self":[{"href":"https:\/\/www.gambio.de\/blog\/wp-json\/wp\/v2\/posts\/10747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gambio.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gambio.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gambio.de\/blog\/wp-json\/wp\/v2\/users\/24"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gambio.de\/blog\/wp-json\/wp\/v2\/comments?post=10747"}],"version-history":[{"count":7,"href":"https:\/\/www.gambio.de\/blog\/wp-json\/wp\/v2\/posts\/10747\/revisions"}],"predecessor-version":[{"id":10840,"href":"https:\/\/www.gambio.de\/blog\/wp-json\/wp\/v2\/posts\/10747\/revisions\/10840"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gambio.de\/blog\/wp-json\/wp\/v2\/media\/10749"}],"wp:attachment":[{"href":"https:\/\/www.gambio.de\/blog\/wp-json\/wp\/v2\/media?parent=10747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gambio.de\/blog\/wp-json\/wp\/v2\/categories?post=10747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gambio.de\/blog\/wp-json\/wp\/v2\/tags?post=10747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}