020
02.06.2005, 21:03 Uhr
Crazy-X
|
Hi,
Tja, ist ja fast schon ein vernichtendes Urteil, dein Beitrag. ABER: An die ganzen Einwände und Probleme, die du zu meinen Ideen aufzeigst, habe ich leider auf grund mangelnder Projekterfahrung eben noch garnicht gedacht. Und genau deswegen wollte ich das ganze ja als Open Source aufbauen.
Zu dieser Client/Server Geschichte: Diese ganze Client-Server Architektur für die GUI ist im Grunde ja kein Musskriterium. Die Grund-Idee ist erstmal ein ganz normales Programm bei dem Anwendung und GUI auf einem PC laufen. (Allerdings schon Anwendung und GUI "programmier-logisch" voneinander getrennt/austauschbar). Diese ganze GUI-Protokoll Idee ist eher zufällig enstanden und sollte eine Idee für evtl. spätere Vesionen des Programms sein. Ich hatte eben gerade diese Musikdatenbank Idee geplant, als ich mal wieder über das giFT Projekt gestolpert bin. Und da ich die Idee, die Anwendung über ein Netzwerkprotokoll zu steuern schon recht cool fand, dachte ich mir sowas auch bei meinem Projekt einzusetzen.
Ob sowas aber bei diesem Projekt funktioniert bzw. überhaupt sinnvoll ist, kann ich eben mangels Erfahrung nicht sagen. Diese ganzen Probleme, die du ansprichts, hatte ich jedenfalls selbst noch nicht erkannt.
Zitat von Spacelord: |
... oder auch jede andere Klasse die per Socket ankommt ...
|
Tja, das übertragene Referenzen nichts bringen ist schon klar. Ich hatte schon vor den wirklichen "Inhalt" über das Protokoll zu schicken. Allerdings hatte ich nie vor, "komplette Objekte" über das Protokoll zu jagen. Z.B. der Server schickt ein
GetPlaylist
an den Server. Dieser holt sich die Informationen und schickt diese in z.B. dieser Form zurück:
Playlist { name {Superhits} titel {file1.mp3, Interpret, Songtitel} titel {file2.mp3, Interpret, Songtitel} ... }
Das das jetzt mal eine CPlaylist war, braucht die GUI ja nicht zu wissen. Bzw. muss sie ja auch keine CPlaylist mehr daraus erstellen. Die GUI wollte lediglich wissen, welche Titel in der aktuellen Playliste sind. Und diese Informationen hat sie ja bekommen. Allerdings gebe ich dir da Recht, das dadurch gewissermaßen die Objektorientierung flöten geht. Eigentlich kann man ja aber immernoch Anwendung und GUI objektorientiert programmieren.
Ich habe heute nochmal darüber nachgedacht und glaube ich weis worauf du hinaus willst. Ich hatte das die ganze Zeit so gedacht: Die normale Version (alles lokal) und die Client/Server Version nutzen die gleiche GUI. Die Netzwerkschicht sollte dabei für die GUI transparent sein:
http://home.arcor.de/crazy-x/musicfire/NetLayer.txt
Dann müsste der Client, die Daten aber wirklich wieder in eine CPlaylist wandeln. Aber mann kann auch einfach für die Client/Sever Version eine GUI schreiben bzw. anpassen, die eben die Daten direkt aus dem Netzwerkprotokoll zieht. So läuft das jedenfalls bei giFT.
Ok, aber wir haben bisher ja auch nur über den Player Teil gesprochen. Wenn dann z.B. auch Alben-Informationen, Interpreter-Daten, usw. über das Protokoll laufen sollen, wirds schon etwas umfangreicher. Ob man dann immernoch ohne Referenzen auskommt um evtl. Daten zu verknüpfen, weiss ich leider nicht. Bzw. sollten evtl. Bilder von Alben Covern gespeichert werden: Dann müssten binäre Daten über das Protokoll laufen...
Evtl. wäre dann sowas wie CORBA wirklich besser geeignet. Aber wie gesagt, diese ganze Idee sollte eh erstmal in den Hintergrund rücken und dann -wenn überhaupt- in späteren Versionen aufgegriffen werden.
Thema Java: Ich habe ja schon gesagt, das falls Interesse besteht, das Projekt mit Java zu realisieren, wir gerne darüber diskutieren können. Gerade weil ich mich noch nicht umfassend mit Java beschäftigt habe (allerdings habe ich Erfahrungen in .Net), möchte ich nicht behaupten, dass ich mich nicht mit Java anfreunden könnte. ;-)
Dazu hätte ich dann nochmal folgende Fragen:
1. Wäre es z.B. auch möglich für ein Java Programm eine C++ GUI zu programmieren? 2. Und/Oder kann man mit Java ncurses Oberflächen (oder ähnlich) für Konsolen programmieren? 3. Könnte man mit Java auch ein LC-Display ansteuern, bzw. das Programm über ein Bedienfeld steuern?
MFG Crazy-X Dieser Post wurde am 02.06.2005 um 21:05 Uhr von Crazy-X editiert. |