Hallo
DP,
ich habe das Problem, dass ich einem potenziellen Auftraggeber ein Projekt schmackhaft machen muss und bin nun bei der Überlegung, welche Sprachen/Technologien dafür am besten geeignet wären.
Daher frage ich Euch mal um Eure Meinung bzw. Erfahrungen.
Es geht um eine wissenschaftliche Datenbank, die z.T. für interne Zwecke, z.T. auch nach außen hin zur Recherche im Internet gebraucht werden soll.
Die Anforderungen sehen ungefähr wie folgt aus:
1)
Die Datenbank selbst existiert noch nicht, es gibt lediglich Daten in verschiedensten Formaten von Schreibmaschine bis Word-Dokument (was sich in 40 Jahren so angesammelt hat).
2)
Es müssen Wege gefunden werden, die vorhandenen Daten so automatisiert wie möglich in die Datenbank zu bringen.
3)
Die Daten sollen zukünftig auf verschiedenen Ebenen bearbeitet werden:
a)
"Hausintern", also eine
DB-Anwendung mit weitreichender Flexibilität
b)
Teile der Daten sollen über das Internet öffentlich recherchierbar sein.
c)
Evtl. sollen später registrierte Benutzer über das Internet Daten in die
DB einfügen können (möglicherweise mit verschiedenen "Rollen", d.h. abhängig von einem Login können verschiedene Bereiche der
DB bearbeitet werden).
d)
Von verschiedenen Mitarbeitern an verschiedenen Orten, die sporadisch mit der
DB arbeiten und auch nur gelegentlich neue Daten einspielen. Das kann sowohl auf Laptops geschehen als auch auf Arbeitsrechnern, die irgendwo stehen und nicht unbedingt konstanten Internetzugang haben.
Der Server würde wohl irgendwo in einem Uni-Netzwerk laufen, also wahrscheinlich auf einem Unix-
OS.
Die hausinternen Mitarbeiter arbeiten auf Mac.
Es ist sicher möglich, auch (mindestens) einen Windows-Rechner im Haus-Netz unterzubringen.
Zu 1) Als Datenbank selbst möchte ich Firebird nehmen, da ich ihn (?) recht gut kenne und er bezüglich der Dimensionen des Projektes sicher gut geeignet ist.
Zu 2)
Das kann ich (auf Grund meiner Erfahrungen) vorläufig nur mit Delphi realisieren, da ich mich damit am besten auskenne.
Zu 3)
a)-c) Dafür erscheint mir eine Webserver-Architektur geeignet.
Vorstellbar wäre eine Lösung mit einer Delphi-Webserver-Anwendung, die die verschiedenen Anwendungsfälle realisiert.
Nachteil: Plattformabhängigkeit.
Wieweit kann ich davon ausgehen, mein Webserver-Programm zumindest auch für Linux zum Laufen zu bekommen (womit ich noch überhaupt keine Erfahrung habe)?
Daher dachte ich an eine PHP-Anwendung, mit der die verschiedenen Programm-Modi auch realisierbar wären.
Durch d) wird das aber schwierig, da ja auf den Laptops und Heim-Rechnern nicht überall PHP-fähige Webserver und
DB-Server installiert werden können.
Daher hatte ich die Idee, das ganze (bis auf Punkt 2) auf Java-Basis zu realisieren.
für 3a) denke ich dabei an eine selbständige Java-Applikation, wahrscheinlich dreischichtig.
Für 3b) und c) an eine Browseranwendung mit JavaServerPages. Evtl. könnte auch 3a) so gelöst werden
3d) könnte wiederum mit einer selbständigen Java-Applikation und lokalen Datenbanken (Firebird embedded) sowie Replikationsmechanismen gelöst werden.
Den Vorteil dieses Ansatzes erhoffe ich mir darin, dass ich große Teile der ganzen Geschäftslogik mit Java-Klassen realisieren kann, die in allen verschiedenen Anwendungsformen wiederverwendet werden können (sowohl für die selbständigen Anwendungen als auch für die JSP).
Der Haken daran ist, dass ich mich mit Java nur in den Grundlagen auskenne und kaum praktische Erfahrung habe.
Das ist wiederum nicht ganz so katastrophal, da ich nicht eigentlich als Informatiker gefragt bin, sondern "nur" als Wissenschaftler im relevanten Fach, der gleichzeitig in der Lage ist, die entsprechenden Programme zu entwickeln; Einarbeitungszeit ist also kein k.o.-Kriterium.
Die Fragen sind nun vor allem:
- Ist meine Vorstellung von der Java/JSP-Architektur einigermaßen richtig?
- Oder könnte ich das alles doch genausogut mit Delphi realisieren (wo ich mich eher zuhause fühle)?
- Oder wäre doch etwas wie PHP eine gangbare Lösung?
Danke für Eure Meinungen
Urs
P.S.
Ich bin nicht interessiert an einer ausufernden Diskussion über die "beste" Programmiersprache.
Nur an geeigneten Techniken für meine Aufgabenstellung und meinen Hintergrund