Hallo zusammen,
ich bin mit CMSMS nun seit etwa einem Jahr unterwegs und habe seit dem auch relativ viel in den Foren gelesen, eigene UDT und Plug-Ins geschrieben, diverse Module verwendet etc...
Jetzt hat meine Frage keinen direkten Umsetzungsbezug, sondern es interessiert mich einmal grundsätzlich.
Für viele Aufgaben einer Site gibt es mit CMSMS oftmals mehrere Wege der Umsetzung. Z.T. lassen sich diese mit einem Modul, z.T. mit einem Plug-in oder UDT umsetzen.
1) Module finde ich aus Entwicklersicht praktischer. Ich habe meine spezifischen Inhalte schön gekapselt in einem gesonderten Bereich, oft in einer eigenen DB Tabelle und spezifische Interfaces die die Anwendung spezieller machen.
2) Aus Endanwender-Sicht (Editor) finde ich Plug-In tendenziell besser, da hier oft auf bekanntem Wege über die normale Seiten-Bedienung Inhalt verwaltet werden kann. Mit Smarty kann aus den Ergebnissen noch viel erreicht werden, so dass oftmals die wenigen Funktionen die man von einem Modul nutzen möchte abgefrühstückt werden.
3) Als dritte Möglichkeit stünde das Einbinden eigener kleiner PHP Scripte/Anwendungen. Absolute Freiheit, allerdings läuft hier alles gesondert ab, dafür kann ich auch bestehende Sachen bequem weiternutzen oder Anwendungen "gekapselt" einfügen.
4) UDT wenn's schnell gehen muss, die benötigte Funktion wirklich kurz ist.
Wenn man die Seitenrender-Performance und Usability als Grundlage der Entscheidung nehmen würde, welche Lösung ist für euch die beste, eleganteste oder schlechteste und warum.
Ich weiß, diese Frage so generisch zu beantworten ist schwer. Es kommt auf die Code-Qualität, komplexität der Aufgabe etc an. Vielleicht lässt sich diese Frage auch gar nicht pauschal beantworten.
Was wären eure Kriterien für die Wahl von einer der vier Möglichkeiten? Womit arbeitet ihr am liebsten?
Beste Grüße
Nils
Module VS. Plug-In VS. Include VS. UDT
Re: Module VS. Plug-In VS. Include VS. UDT
Interessante Frage.
Ich glaube es kommt in erster Linie immer darauf an, welche Funktionalität gebraucht wird.
Für Funktionen, die nur für das Frontend benötigt werden und keine eigene DB Tabelle benötigen, würde ich ganz klar Plugin, UDT oder externe Anwendungen verwenden.
Hier ist für mich das Plugin der Favorit, da diese meist performanter sind als UDTs.
Externe Anwendungen habe ich bisher noch nicht verwendet. Kann da kein Pro oder Kontra geben.
Wenn ich die Anwendung selber schreiben müsste, dann würde ich gleich ein Plugin/UDT oder Modul für CMSms schreiben.
(Ich mag die CMSms API. Das ist so... logisch
)
Hab es bisher immer vermieden "Fremdcode" mit CMSms zu "mischen".
Bin allerdings auch kein Programmierer. Vielleicht ist das auch nur eine Sache des Könnens.
Funkionen, die über das Backend verwaltet/konfiguriert werden müssen und somit auch eine eigene DB Tabelle benötigen, können eigentlich nur mit Modulen realisiert werden. Selbst wenn ich da eine externe Anwendung verwenden würde, bräuchte ich irgendwie eine Schnittstelle für CMSms. Wenn ich die externe Anwendung nicht selber schreiben kann, dann würde ich ein Modul als Schnittstelle kreieren und damit die externe Anwendung einbinden.
Aber wie gesagt, sowas habe ich bisher immer vermieden.
Ich mag es, wenn alles wie aus einem Guss ist. Bei externen Anwendungen bin ich mir nicht sicher, ob die problemlos miteinander harmonieren.
Für mich persönlich wird dann alles nur unübersichtlicher.
Vor allem, wenn ich dann evtl. noch zwei unterschiedliche Datenbanken verwalten muss.
Aber auch bei Modulen kommt es wieder darauf an, ob das Modul auch Funktionen für das Frontend bereitstellt.
Da wäre eine Kombination aus Plugin und Modul ideal (siehe NewsModul oder MenuManager).
Der UDT hat für mich eine Sonderstellung, da er Funktionen sowohl für das Frontend als auch über die Ereignisverwaltung für das Backend bereitstellen kann.
Die Frage ist in der Tat nicht so leicht zu beantworten. Meine ersten Efahrungen mit php habe ich gemacht, als ich das NewsModul in der CMSms Version 0.13 modifiziert habe.
Somit ist es für mich leichter, ein Modul zu schreiben.
Wenn es darum geht irgendeine Funktion für das CMS zu erstellen, denke ich als erstes immer an ein Modul.
In letzter Zeit stelle ich allerdings immer wieder fest, dass sich manche Dinge besser als Plugin oder UDT machen (sofern kein Adminpanel benötigt wird).
UDTs würde ich aber nur dann verwenden wenn es a) schnell gehen soll und ich evtl. nur testen will, ob ich dies oder jenes überhaupt realisieren kann oder b) ich zusätzlich die Ereignisverwaltung nutzen möchte.
Meine Favoriten: Module und Plugins.
Ich glaube es kommt in erster Linie immer darauf an, welche Funktionalität gebraucht wird.
Für Funktionen, die nur für das Frontend benötigt werden und keine eigene DB Tabelle benötigen, würde ich ganz klar Plugin, UDT oder externe Anwendungen verwenden.
Hier ist für mich das Plugin der Favorit, da diese meist performanter sind als UDTs.
Externe Anwendungen habe ich bisher noch nicht verwendet. Kann da kein Pro oder Kontra geben.
Wenn ich die Anwendung selber schreiben müsste, dann würde ich gleich ein Plugin/UDT oder Modul für CMSms schreiben.
(Ich mag die CMSms API. Das ist so... logisch

Hab es bisher immer vermieden "Fremdcode" mit CMSms zu "mischen".
Bin allerdings auch kein Programmierer. Vielleicht ist das auch nur eine Sache des Könnens.
Funkionen, die über das Backend verwaltet/konfiguriert werden müssen und somit auch eine eigene DB Tabelle benötigen, können eigentlich nur mit Modulen realisiert werden. Selbst wenn ich da eine externe Anwendung verwenden würde, bräuchte ich irgendwie eine Schnittstelle für CMSms. Wenn ich die externe Anwendung nicht selber schreiben kann, dann würde ich ein Modul als Schnittstelle kreieren und damit die externe Anwendung einbinden.
Aber wie gesagt, sowas habe ich bisher immer vermieden.
Ich mag es, wenn alles wie aus einem Guss ist. Bei externen Anwendungen bin ich mir nicht sicher, ob die problemlos miteinander harmonieren.
Für mich persönlich wird dann alles nur unübersichtlicher.
Vor allem, wenn ich dann evtl. noch zwei unterschiedliche Datenbanken verwalten muss.
Aber auch bei Modulen kommt es wieder darauf an, ob das Modul auch Funktionen für das Frontend bereitstellt.
Da wäre eine Kombination aus Plugin und Modul ideal (siehe NewsModul oder MenuManager).
Der UDT hat für mich eine Sonderstellung, da er Funktionen sowohl für das Frontend als auch über die Ereignisverwaltung für das Backend bereitstellen kann.
Die Frage ist in der Tat nicht so leicht zu beantworten. Meine ersten Efahrungen mit php habe ich gemacht, als ich das NewsModul in der CMSms Version 0.13 modifiziert habe.
Somit ist es für mich leichter, ein Modul zu schreiben.
Wenn es darum geht irgendeine Funktion für das CMS zu erstellen, denke ich als erstes immer an ein Modul.
In letzter Zeit stelle ich allerdings immer wieder fest, dass sich manche Dinge besser als Plugin oder UDT machen (sofern kein Adminpanel benötigt wird).
UDTs würde ich aber nur dann verwenden wenn es a) schnell gehen soll und ich evtl. nur testen will, ob ich dies oder jenes überhaupt realisieren kann oder b) ich zusätzlich die Ereignisverwaltung nutzen möchte.
Meine Favoriten: Module und Plugins.
Re: Module VS. Plug-In VS. Include VS. UDT
Dito.
Einen udt würde ich aus Performance-Gründen nur während der Entwicklung verwenden und dann in einen Smarty-Tag oder Plugin umwandeln, da bei dessen Ausführung immer ein DB-Zugriff notwendig ist. Und der Code, der beim Parsen eines einfachen hello-world entsteht, ist auch nicht unbedingt performancefreundlich ...
Einen udt würde ich aus Performance-Gründen nur während der Entwicklung verwenden und dann in einen Smarty-Tag oder Plugin umwandeln, da bei dessen Ausführung immer ein DB-Zugriff notwendig ist. Und der Code, der beim Parsen eines einfachen hello-world entsteht, ist auch nicht unbedingt performancefreundlich ...
Re: Module VS. Plug-In VS. Include VS. UDT
Die nachfolgende Auflistung ist nur meine persönliche Meinung!
UDT
Ich habe bisher nur einfache UDTs geschrieben. Das schöne ist, dass man den Code bei der Entwicklung sofort unter Realbedingungen testen kann, wie Cyberman bereits geschrieben hat - vor allem wenn man kein PHP-Crack ist. Ein weiterer positiver Faktor (für mich) ist, dass der Code sehr einfach mit der Datenbank gesichert werden kann, was bei meinem Hobbyprojekt automatisch passiert (Mysqldumper). Ein Dateibackup erfolgt bei mir nur manuell von Zeit zu Zeit. Gerade in der Entwicklungsphase ist eine einfache automatische Sicherung von Vorteil.
Nachteil ist sicher der Performanceverlust und das man IMHO für Designer oder Editoren keine Hilfetexte über das Backend zur Verfügung stellen kann. Das Arbeiten mit UDTs über Smarty-Tags kann man vielleicht einem Designer zutrauen, einem einfachen Editor sicher nicht immer. Diese Einschränkung gilt auch für die Plugins.
Für einfache Aufgaben und/oder Code der nicht so häufig aufgerufen wird oder zum Entwickeln von Plugins halte ich die UDTs für eine feine Sache.
Plugins
Ich habe bisher keine eigene Plugins geschrieben, sondern nur einige angepasst. Vorteil sollen ja die Performance im Vergleich zu UDTs und Modulen sein. Einfache Plugins lassen sich auch von PHP Anfängern programmieren. Man kann bestehende Plugins auch meist schnell an eigene Bedürfnisse anpassen. Dem Designer/Editor kann man Hilfetexte über das Backend zur Verfügung stellen.
Außer dem Performanceverlust und den Hilfetexten gelten auch die Nachteile der UDTs. Man muss die Dateien separat sichern und kann sie nicht wie bei UDTs automatisch mit der Datenbank sichern lassen.
Ich finde Plugins eignen sich auch für größere Aufgaben, die keine graphische Benutzerschnittstelle im Backend brauchen.
Module
Haben eine meist einfache graphische Benutzeroberfläche und eignen sich auch für Editoren, die nur PC-Anwender-Erfahrung haben. Das Anlegen der Tags kann ja der Designer im Template oder der Seite machen. Ich habe die Erfahrung gemacht, dass Module bei (meinen) Editoren gut ankommen.
Module sind aufwendiger zu programmieren. Ich habe mich noch nicht getraut eins zu programmieren und für einfache Aufgaben ist es einfach "too much". Wenn ich richtig gelesen habe, brauchen sie auch mehr Arbeitsspeicher und sind nicht so perfomant wie Plugins.
Ich finde Module sind die richtige Lösung, wenn man Editoren eine einfache Benutzerschnittstelle für größere Aufgaben zur Verfügung stellen möchte. Das Album-Modul ist ein gutes Beispiel. Aber auch für Designer/erfahrene Editoren hat es Vorteile, z.B das FormBuilder-Module.
UDT
Ich habe bisher nur einfache UDTs geschrieben. Das schöne ist, dass man den Code bei der Entwicklung sofort unter Realbedingungen testen kann, wie Cyberman bereits geschrieben hat - vor allem wenn man kein PHP-Crack ist. Ein weiterer positiver Faktor (für mich) ist, dass der Code sehr einfach mit der Datenbank gesichert werden kann, was bei meinem Hobbyprojekt automatisch passiert (Mysqldumper). Ein Dateibackup erfolgt bei mir nur manuell von Zeit zu Zeit. Gerade in der Entwicklungsphase ist eine einfache automatische Sicherung von Vorteil.
Nachteil ist sicher der Performanceverlust und das man IMHO für Designer oder Editoren keine Hilfetexte über das Backend zur Verfügung stellen kann. Das Arbeiten mit UDTs über Smarty-Tags kann man vielleicht einem Designer zutrauen, einem einfachen Editor sicher nicht immer. Diese Einschränkung gilt auch für die Plugins.
Für einfache Aufgaben und/oder Code der nicht so häufig aufgerufen wird oder zum Entwickeln von Plugins halte ich die UDTs für eine feine Sache.
Plugins
Ich habe bisher keine eigene Plugins geschrieben, sondern nur einige angepasst. Vorteil sollen ja die Performance im Vergleich zu UDTs und Modulen sein. Einfache Plugins lassen sich auch von PHP Anfängern programmieren. Man kann bestehende Plugins auch meist schnell an eigene Bedürfnisse anpassen. Dem Designer/Editor kann man Hilfetexte über das Backend zur Verfügung stellen.
Außer dem Performanceverlust und den Hilfetexten gelten auch die Nachteile der UDTs. Man muss die Dateien separat sichern und kann sie nicht wie bei UDTs automatisch mit der Datenbank sichern lassen.
Ich finde Plugins eignen sich auch für größere Aufgaben, die keine graphische Benutzerschnittstelle im Backend brauchen.
Module
Haben eine meist einfache graphische Benutzeroberfläche und eignen sich auch für Editoren, die nur PC-Anwender-Erfahrung haben. Das Anlegen der Tags kann ja der Designer im Template oder der Seite machen. Ich habe die Erfahrung gemacht, dass Module bei (meinen) Editoren gut ankommen.
Module sind aufwendiger zu programmieren. Ich habe mich noch nicht getraut eins zu programmieren und für einfache Aufgaben ist es einfach "too much". Wenn ich richtig gelesen habe, brauchen sie auch mehr Arbeitsspeicher und sind nicht so perfomant wie Plugins.
Ich finde Module sind die richtige Lösung, wenn man Editoren eine einfache Benutzerschnittstelle für größere Aufgaben zur Verfügung stellen möchte. Das Album-Modul ist ein gutes Beispiel. Aber auch für Designer/erfahrene Editoren hat es Vorteile, z.B das FormBuilder-Module.
Hanis Sammelsurium - How To's, Erfahrungs- und Meinungsberichte