Erstmal hallo Gemeinde 
Ich steh derzeit am Anfang eines privaten Projekts und würde gern mal eure Meinung dazu lesen. Grundsätzlich geht es um eine Middleware-Anwendung, dazu ein webbasiertes Frontend (am besten mit ajaxifizierten Controls) und die Anbindung eines RDBMS. Mein Problem ist jetzt folgendes: Ich möchte den Anwendern zum einen die Möglichkeit bieten, die vorhandene Formularelemente an ihre Bedürfnisse anzupassen (Stichwort customizing, z. B. soll es möglich sein, zusätzlich Eingabefelder anzulegen und diese entsprechend mit neuen Tabellenfeldern zu verknüpfen oder aber auch bestehende Formularfelder bei Nichtbedarf auszublenden), zum anderen soll der Anwender auch eigene Erweiterungen zum System hinzufügen können (inkl. neuer, dem Plugin zugehöriger Seiten im Frontend). Nachfolgend hab ich euch mal meine bisherigen Gedanken dazu aufgeschrieben. Sollte irgendetwas nicht ganz klar sein, am besten nochmal Fragen, dann versuche ich das ganze noch ausführlicher zu erklären.
Für das Frontend hab ich derzeit GWT (zusammen mit GWT-Ext) ins Auge gefasst. GWT deshalb, weil man hier die Seite programmatisch zusammenbaut und somit die Möglichkeit bestünde, dass jedes Plugin über eine definierte (XML-)Konfigurationsdatei (oder von mir aus DB-basiert) ihr Aussehen selbst bestimmt und ich in GWT den (XML-)Output parse und die Controls entsprechend erzeuge. Zudem bestünde die Möglichkeit, dass man Customizing-Vorgänge, die der Anwender vornimmt, in so einer (XML-)Konfigurationsdatei festhält und somit ein Customizing ermöglicht. Meine Frage wäre jetzt, was ihr von dieser Vorgehensweise haltet oder was ihr anders/besser machen würdet. Ich muss dazu sagen, dass ich bisher lediglich Wissen in Struts, JSF und GWT besitze, aber durchaus bereit wäre mich in andere Webframeworks (wie z. B. ZK) einzuarbeiten, sofern diese für solche Aufgaben besser geeignet sind. Einzige Bedingung ist, dass diese ajaxifizierte Controls bereitstellen (so dass man selbst möglichst wenig mit JavaScript in Berührung kommt) und eben ermöglichen, dass man das Erscheinungsbild verändern kann (womit wohl der Einsatz von Templates wegfällt oder?).
Für die Middleware kommen derzeit ja fast nur EJB 3.0 oder das Spring Framework in Frage (oder gibts noch andere relevante Techniken derzeit?). Wichtig ist hierbei für mich, dass man das o. g. Plugin-Konzept realisieren kann. Da ich bedeutend mehr Erfahrung mit EJB habe als mit Spring (da hab ich nur mal n bissl mit dem Core rumgespielt und WS erzeugt), tendiere ich derzeit zu EJB, bin aber auch hier durchaus bereit, mich weiter mit Spring zu beschäftigen, wenn das sich für mein Vorhaben besser eignet. Ich hatte mir dabei folgendes überlegt. Wird im Frontend eine neue Seite angefordert, erfolgt mittels eines dynamisch gestalteten JNDI-Lookups der Aufruf der jeweiligen EJB, womit eigene Plugins als eigenständige Enterprise- oder EJB-Projekte deployed werden könnten und lediglich der Lookup-Pfad in der Anwendung (z. B. in einer entsprechenden Registry) festgehalten werden müsste. Was mir jetzt an dem beschriebenen Vorgehen nicht gefällt sind die beiden folgenden Punkte. Erstens würde ich den Einsatz von OSGI präferieren, wüsste aber nicht, wie man das mit EJB realisieren könnte (Spring scheint an dieser Stelle mit Dynamic Modules eine Lösung anzubieten --> meine Frage an die Spring-Erfahrenen: Wäre das eine Lösung für mein Vorhaben?).Zweitens gelten die JNDI-Lookups bei EJB als Ressourcenverschwendung, wenn diese in der gleichen VM deployed sind (was bei meiner Anwendung wohl zu erwarten wäre), allerdings benötige ich diese, wenn ich dynamisch die entsprechenden Methoden aufrufen möchte (oder irre ich mich an dieser Stelle?). An der Stelle wieder meine Frage: Was haltet ihr von diesem Vorgehen oder wie würdet ihr das ganze realisieren? Wichtig ist in diesem Zusammenhang vielleicht noch, dass für mich Transaktionen und Sicherheit wichtig sind, aber da scheinen sich beide Frameworks nicht viel zu schenken.
Letzte Unklarheit wäre für mich jetzt der Einsatz eines OR-Mappers. Immer wieder liest man ja, dass man bei neuen Projekten gleich auf ORM (Hibernate, JDO und Co) setzen sollte und zudem gefällt mir die Vorstellung, damit eine Vielzahl der gängigen RDBMS abzudecken, ohne eigene Layer schreiben zu müssen. Allerdings hatte ich ja bereits erwähnt, dass der Anwender eigene Formularfelder anlegen können soll. Jetzt bin ich mir nicht sicher, ob das mit ORM-Frameworks möglich ist (Annotationen dürften wegfallen und ein stat. XML-Configurationfile eigentlich auch, sofern das nicht dynamisch angepasst wird oder?). Wie würdet ihr in diesem Punkt verfahren? Hab da leider keine gute Idee, wie ich das an dieser Stelle machen soll.
Ich hoffe, ihr könnt mir bei den o. g. Problemstellungen weiterhelfen, bin für jede Hilfe dankbar.
Gruß
fkh
Ich steh derzeit am Anfang eines privaten Projekts und würde gern mal eure Meinung dazu lesen. Grundsätzlich geht es um eine Middleware-Anwendung, dazu ein webbasiertes Frontend (am besten mit ajaxifizierten Controls) und die Anbindung eines RDBMS. Mein Problem ist jetzt folgendes: Ich möchte den Anwendern zum einen die Möglichkeit bieten, die vorhandene Formularelemente an ihre Bedürfnisse anzupassen (Stichwort customizing, z. B. soll es möglich sein, zusätzlich Eingabefelder anzulegen und diese entsprechend mit neuen Tabellenfeldern zu verknüpfen oder aber auch bestehende Formularfelder bei Nichtbedarf auszublenden), zum anderen soll der Anwender auch eigene Erweiterungen zum System hinzufügen können (inkl. neuer, dem Plugin zugehöriger Seiten im Frontend). Nachfolgend hab ich euch mal meine bisherigen Gedanken dazu aufgeschrieben. Sollte irgendetwas nicht ganz klar sein, am besten nochmal Fragen, dann versuche ich das ganze noch ausführlicher zu erklären.
Für das Frontend hab ich derzeit GWT (zusammen mit GWT-Ext) ins Auge gefasst. GWT deshalb, weil man hier die Seite programmatisch zusammenbaut und somit die Möglichkeit bestünde, dass jedes Plugin über eine definierte (XML-)Konfigurationsdatei (oder von mir aus DB-basiert) ihr Aussehen selbst bestimmt und ich in GWT den (XML-)Output parse und die Controls entsprechend erzeuge. Zudem bestünde die Möglichkeit, dass man Customizing-Vorgänge, die der Anwender vornimmt, in so einer (XML-)Konfigurationsdatei festhält und somit ein Customizing ermöglicht. Meine Frage wäre jetzt, was ihr von dieser Vorgehensweise haltet oder was ihr anders/besser machen würdet. Ich muss dazu sagen, dass ich bisher lediglich Wissen in Struts, JSF und GWT besitze, aber durchaus bereit wäre mich in andere Webframeworks (wie z. B. ZK) einzuarbeiten, sofern diese für solche Aufgaben besser geeignet sind. Einzige Bedingung ist, dass diese ajaxifizierte Controls bereitstellen (so dass man selbst möglichst wenig mit JavaScript in Berührung kommt) und eben ermöglichen, dass man das Erscheinungsbild verändern kann (womit wohl der Einsatz von Templates wegfällt oder?).
Für die Middleware kommen derzeit ja fast nur EJB 3.0 oder das Spring Framework in Frage (oder gibts noch andere relevante Techniken derzeit?). Wichtig ist hierbei für mich, dass man das o. g. Plugin-Konzept realisieren kann. Da ich bedeutend mehr Erfahrung mit EJB habe als mit Spring (da hab ich nur mal n bissl mit dem Core rumgespielt und WS erzeugt), tendiere ich derzeit zu EJB, bin aber auch hier durchaus bereit, mich weiter mit Spring zu beschäftigen, wenn das sich für mein Vorhaben besser eignet. Ich hatte mir dabei folgendes überlegt. Wird im Frontend eine neue Seite angefordert, erfolgt mittels eines dynamisch gestalteten JNDI-Lookups der Aufruf der jeweiligen EJB, womit eigene Plugins als eigenständige Enterprise- oder EJB-Projekte deployed werden könnten und lediglich der Lookup-Pfad in der Anwendung (z. B. in einer entsprechenden Registry) festgehalten werden müsste. Was mir jetzt an dem beschriebenen Vorgehen nicht gefällt sind die beiden folgenden Punkte. Erstens würde ich den Einsatz von OSGI präferieren, wüsste aber nicht, wie man das mit EJB realisieren könnte (Spring scheint an dieser Stelle mit Dynamic Modules eine Lösung anzubieten --> meine Frage an die Spring-Erfahrenen: Wäre das eine Lösung für mein Vorhaben?).Zweitens gelten die JNDI-Lookups bei EJB als Ressourcenverschwendung, wenn diese in der gleichen VM deployed sind (was bei meiner Anwendung wohl zu erwarten wäre), allerdings benötige ich diese, wenn ich dynamisch die entsprechenden Methoden aufrufen möchte (oder irre ich mich an dieser Stelle?). An der Stelle wieder meine Frage: Was haltet ihr von diesem Vorgehen oder wie würdet ihr das ganze realisieren? Wichtig ist in diesem Zusammenhang vielleicht noch, dass für mich Transaktionen und Sicherheit wichtig sind, aber da scheinen sich beide Frameworks nicht viel zu schenken.
Letzte Unklarheit wäre für mich jetzt der Einsatz eines OR-Mappers. Immer wieder liest man ja, dass man bei neuen Projekten gleich auf ORM (Hibernate, JDO und Co) setzen sollte und zudem gefällt mir die Vorstellung, damit eine Vielzahl der gängigen RDBMS abzudecken, ohne eigene Layer schreiben zu müssen. Allerdings hatte ich ja bereits erwähnt, dass der Anwender eigene Formularfelder anlegen können soll. Jetzt bin ich mir nicht sicher, ob das mit ORM-Frameworks möglich ist (Annotationen dürften wegfallen und ein stat. XML-Configurationfile eigentlich auch, sofern das nicht dynamisch angepasst wird oder?). Wie würdet ihr in diesem Punkt verfahren? Hab da leider keine gute Idee, wie ich das an dieser Stelle machen soll.
Ich hoffe, ihr könnt mir bei den o. g. Problemstellungen weiterhelfen, bin für jede Hilfe dankbar.
Gruß
fkh