Adressverwaltung Server/Client mit Java oder C++?

  • Ersteller Ersteller derBobby
  • Erstellt am Erstellt am
D

derBobby

Gast
Hallo zusammen,

ich möchte meine Programmierkenntnisse etwas erweitern und üben. Aktuell bietet sich ein praktischer Fall: Es wird eine Adressverwaltung mit einigen Zusätzen für einen Vereins Kreisverband benötigt. Die Informationen sollen auf einem Server liegen und verschiedene Benutzer mit einem Client-Programm darauf zugreifen können. Die Benutzer sollen verschiedene Rechte erhalten.

Könnt ihr mir da eine der im Titel genannten Programmiersprachen eher dafür empfehlen? Bis jetzt habe ich mehr Kenntnisse in Java als C++.

Auch ist mir die Vorgehensweise noch nicht so ganz klar. Schreibe ich je ein Server- und Clientprogramm, oder wie gehe ich das an? Bis jetzt habe ich nur einen PIC-Simulator für einen Mikroprozessor in Java geschrieben, jedoch noch nie mit TCP/IP gearbeitet.

Die Datenbank mit MySQL Workbench entwerfen ist kein Thema denke ich.

Gruß Bobby
 
Denke für sowas wäre eventuell auch PHP geeignet, also eine Webanwendung mit Portal.
TCP-IP ist in beiden fällen, sowohl JAVA als auch C++ mit ein paar Stolperfallen versehen. Ich denke HTTP Anfragen wären das richtige für dich, kann man auch mit einer Desktop Anwendung nutzen.

Aber der Input ist ein wenig dünn um dir eine klare Empfehlung geben zu können.
 
Wenn du mit Java arbeiten möchtest solltest du dich in Sockets einarbeiten. In Java ist eine Insel ist es schön beschrieben und frei zugänglich.
 
.NET bzw. C# oder Vb.net eignen sich hierfür ebenfalls sehr gut. Du könntest auch mit .NET eine Webanwendung schreiben. Das Framework bringt für solche Zwecke viele Klassen und Funktionen mit.
 
Die Programmiersprache ist grundlegend egal. Du musst auch keine direkte TCP/IP Imlementierung schreiben. Verwende bei Bedarf eine vorhandene Bibliothek bzw. verzichte ganz darauf.

Mit .Net und Java kannst du ganz leicht "Web Services" oder "Sockets" etc. schreiben. Grundlegend versendest du z.B. vom Client XML Dokumente (<document><command>Tu das!</command></document> an den Server, welcher per HTTP (Post oder Get) auf Input wartet.

Eigentlich ist es in .Net eine einfache von z.B. HTTPClient wo du die Nachricht anfügst (http://www.codescales.com/send-a-get-request-using-httpclient/). Der Server muss nur noch auf Antwort warten (z.B. ein Web Service, ...).

Davon abgesehen ist das von dir eigentlich eher eine Anwendung für eine Webanwendung oder gar ein Client der direkt auf den Server per SQL zugreift - zumindest wenn die jeweiligen Clients jeweils im selben privaten Netzwerk sind. Für Verbindungen über das Internet sollte schon aus Sicherheitsgründen eine HTTP(S) Verbindung verwendet werden.
 
Sev7eNup schrieb:
.NET bzw. C# oder Vb.net eignen sich hierfür ebenfalls sehr gut. Du könntest auch mit .NET eine Webanwendung schreiben. Das Framework bringt für solche Zwecke viele Klassen und Funktionen mit.
Um sich schön von Windows abhängig zu machen?

Nimm Java, ist leichter als C++. Oder noch besser PHP, wie hier schon jemand gepostet hat.
 
Du musst dich erstmal entscheiden, ob du eine Webanwendung (im Browser) oder eine klassische Desktop-Anwendung haben willst. Dann kann man weitersehen.

Es gibt zig Programmiersprachen und Methoden zum Datenaustausch ueber Netzwerke.

In deinem Fall ist die Basis grundsaetzlich immer TCP und damit werden dann eben abhaengig von deinen Vorstellungen Daten uebertragen.
 
Zuletzt bearbeitet:
derBobby schrieb:
Könnt ihr mir da eine der im Titel genannten Programmiersprachen eher dafür empfehlen? Bis jetzt habe ich mehr Kenntnisse in Java als C++.

Eignen tun sich beide Programmiersprachen dafür. Die Frage die sich stellt ist vielmehr, welche Anforderungen die Anwendung (insbesondere auf der Client-Seite) erfüllen muss. Verwendet man SWT als GUI-Toolkit, sind Java-Anwendungen kaum von einer nativen Anwendung zu unterscheiden, wenn man sich etwas Mühe gibt, aber man benötigt weiterhin die Java-Runtime, mit allem, was das nach sich zieht. Wenn das kein Problem ist, wäre das die Lösung, die ich empfehlen würde.

Mit C++ ist die Entwicklung eine ganz andere, so aus Entwicklersicht. Man könnte natürlich auch nur den Client mit C++ umsetzen, den Server aber in Java schreiben. Je nachdem, welches Betriebssystem verwendet wird, würde ich für den Client auf C# setzen, wenn die Wahl nicht zwingend C++ oder Java lautet (wenn man mit C++ noch nie gearbeitet hat, würde C# sicherlich leichter fallen).


derBobby schrieb:
Auch ist mir die Vorgehensweise noch nicht so ganz klar. Schreibe ich je ein Server- und Clientprogramm, oder wie gehe ich das an?

??? Wenn Dir eine klassische Server-Client-Anwendung vorschwebt, sicherlich. Frameworks für die Server-Entwickler gibt es für Java wie Sand am Meer. Aber wenn Du so überhaupt keine Ahnung hast, wäre es vielleicht besser, eine Web-Anwendung umzusetzen, wenn sich das mit den Anforderungen in Einklang bringen lässt.
 
Würde das ganze ohne Client machen, also das man auf die Seite geht und dann Name und Passwort eingibt (html/css/php + datenbank).
Dann erspart man sich viele Geschichten und man hat nur 1 Baustelle (wo man auch schon viel im Internet zu findet)

Sehe da auch kein Vorteil, dass extra in nen Client auszulagern.
 
Ein Webclient ist auch ein Client. ;)

Ich würde auch eher einen Webclient realisieren. Je nach Vorliebe dann eben mit JSF (Java), ASP.NET (C#), etc. Dadurch entfällt die Notwendigkeit eine Installation des Clients und man ist automatisch Platformunabhängig.
 
Traust du dir das denn überhaupt zu? Ich meine, wenn es um einen Verein geht und vor allem Adressen, die im Netz schweben, fällt das aus meiner Sicht schon nicht mehr in den Bereich Hobbyprogrammierung und dann geht es auch um die Sicherheit der Daten.

Abgesehen von dem Punkt würde ich für diesen Anwendungsfall aber auch deutlich zur Webanwendung tendieren. Eine lokale Anwendung für so etwas erscheint mir nicht mehr zeitgemäß.
 
Das schreit nach einer Webanwendung. Ob die nun in PHP, Perl, Ruby, Python, NodeJS oder sonstwas umgesetzt wird ist dabei nebensächlich.
Fakt ist aber: Wie Tumbleweed schon sagte sind die Sicherheitsaspekte hier so gravierend, dass du schon RICHTIG wissen solltest, was du tust.

Oder du machst es dir leicht: Setz ne Owncloud auf und wirf Tabellen rein.
 
andy_0 schrieb:
Davon abgesehen ist das von dir eigentlich eher eine Anwendung für eine Webanwendung oder gar ein Client der direkt auf den Server per SQL zugreift - zumindest wenn die jeweiligen Clients jeweils im selben privaten Netzwerk sind. Für Verbindungen über das Internet sollte schon aus Sicherheitsgründen eine HTTP(S) Verbindung verwendet werden.
character schrieb:
Du musst dich erstmal entscheiden, ob du eine Webanwendung (im Browser) oder eine klassische Desktop-Anwendung haben willst. Dann kann man weitersehen.
DasBoeseLebt schrieb:
Würde das ganze ohne Client machen, also das man auf die Seite geht und dann Name und Passwort eingibt (html/css/php + datenbank).
Dann erspart man sich viele Geschichten und man hat nur 1 Baustelle (wo man auch schon viel im Internet zu findet)

Sehe da auch kein Vorteil, dass extra in nen Client auszulagern.
Daaron schrieb:
Das schreit nach einer Webanwendung. Ob die nun in PHP, Perl, Ruby, Python, NodeJS oder sonstwas umgesetzt wird ist dabei nebensächlich.
Fakt ist aber: Wie Tumbleweed schon sagte sind die Sicherheitsaspekte hier so gravierend, dass du schon RICHTIG wissen solltest, was du tust.

Die Tatsache, dass ich keine Ahnung von HTML/PHP etc. habe spricht dann wohl automatisch gegen eine Webanwendung! :D Spräche für die Server-Client Lösung nicht auch der Punkt Sicherheit? Eine Seite im Internet wäre für jeden zugänglich, wohingegen das Clientprogramm an einen beschränkten Benutzerkreis verteilt werden könnte!?



sacridex schrieb:
Um sich schön von Windows abhängig zu machen?

Es sollte schon Plattformunabhängig sein, da es eben nicht ganz so wenig Benutzer wären.



SheepShaver schrieb:
Ein Webclient ist auch ein Client. ;)

Ich würde auch eher einen Webclient realisieren. Je nach Vorliebe dann eben mit JSF (Java), ASP.NET (C#), etc. Dadurch entfällt die Notwendigkeit eine Installation des Clients und man ist automatisch Platformunabhängig.

Eine .jar-Applikation muss man ja auch nicht installieren?



soares schrieb:
Eignen tun sich beide Programmiersprachen dafür. Die Frage die sich stellt ist vielmehr, welche Anforderungen die Anwendung (insbesondere auf der Client-Seite) erfüllen muss.

Dann versuche ich noch einmal ein paar Anforderungen und Funktionen zu verfassen:
- Plattformunabhängig
- Verschiedene Tabellen aus MySQL Datenbank darstellen
- Werte aus den Tabellen in die Zwischenablage kopieren können
- Werte aus der Zwischenablage in die Tabellen kopieren können (à la Excel)
- Über die Dargestellten Tabellen Änderungen in der Datenbank machen

Wie stehen die Meinungen jetzt?
 
Das geht alles sowohl mit einer Desktopanwendung als auch mit einer Webanwendung.

Bei plattformunabhaengigen Desktopanwendungen wuerde ich Java oder Python empfehlen (tendenziell eher ersteres).

Fuer eine Webanwendung wuerde ich Python mit einem simplen Framework verwenden. Wenn du frickeln willst, tut's auch PHP. Java waere mir in dem Fall zu ueberdimensioniert.

Die Clientseite wird dann eben mit HTML und JavaScript gemacht. Es gibt Libraries, die die Tabellenfunktionalitaet schon zur Verfuegung stellen.

Meiner Meinung nach gibt es da keine eindeutige Entscheidung.
 
derBobby schrieb:
Die Tatsache, dass ich keine Ahnung von HTML/PHP etc. habe spricht dann wohl automatisch gegen eine Webanwendung! :D Spräche für die Server-Client Lösung nicht auch der Punkt Sicherheit? Eine Seite im Internet wäre für jeden zugänglich, wohingegen das Clientprogramm an einen beschränkten Benutzerkreis verteilt werden könnte!?


die Serveranwendung, die auf Anfragen vom Client wartet, muss aber auch von "jedermann" erreichbar sein. ;) Dazu kannst du eine Webanwendung in der Größe wohl noch locker auf einem einfachen Webspace platzieren. Wenn du jedoch eine Serveranwendung enwickeln willst, wirds eher auf einen V-Server oder dedicated Server hinauslaufen und diese wollen ordenlich administriert werden! ;-) und kosten naürlich auch etwas bis deutlich mehr.
 
derBobby schrieb:
Die Tatsache, dass ich keine Ahnung von HTML/PHP etc. habe spricht dann wohl automatisch gegen eine Webanwendung! :D Spräche für die Server-Client Lösung nicht auch der Punkt Sicherheit? Eine Seite im Internet wäre für jeden zugänglich, wohingegen das Clientprogramm an einen beschränkten Benutzerkreis verteilt werden könnte!?

Du scheinst auch von Client/Server-Entwicklung keine Ahnung zu haben. Auch insofern sollte das nicht der entscheidende Punkt sein :D

Du hast doch ohnehin von Rechteverwaltung gesprochen? Das impliziert doch eine Autorisierung! :freak:


derBobby schrieb:
Eine .jar-Applikation muss man ja auch nicht installieren?

Das Kopieren und Integrieren in den Desktop ist eine Installation. Viele Anwender sind damit schon überfordert. Java Web Start wäre vielleicht eine Alternative. Eine Java-Runtime muss aber installiert sein.
 
derBobby schrieb:
Die Tatsache, dass ich keine Ahnung von HTML/PHP etc. habe spricht dann wohl automatisch gegen eine Webanwendung! :D Spräche für die Server-Client Lösung nicht auch der Punkt Sicherheit? Eine Seite im Internet wäre für jeden zugänglich, wohingegen das Clientprogramm an einen beschränkten Benutzerkreis verteilt werden könnte!?
Der CLIENT ist nur für den User zugänglich, der ihn auch auf seinem lokalen PC hat. Der Client muss aber über ein öffentliches Protokoll mit dem Server kommunizieren. Jedes andere Stück Software kann GENAU SO auf dieses Protokoll zugreifen und dem Server clevere Fragen stellen und die Antworten interpretieren.
Du müsstest ein in C, C++ oder sonstwas geschriebenen Server genau so absichern, wie du es mit einem stinknormalen Webdienst machen musst, nur dass ein stino LAMP-Server weit mehr aushält als du dir auch nur im Entferntesten vorstellen kannst. Da musst du erst mal hin kommen...

Ich kann dazu nur sagen: Deine Kenntnisse reichen nicht einmal ansatzweise für dieses Projekt. Gib es lieber ab, bevor du dir n Bruch hebst und dann an den Folgen die nächsten paar Jahre laborierst.

Eine .jar-Applikation muss man ja auch nicht installieren?
Na "von magischer Hand" öffnen sich Jars auch nicht. Dazu muss der Client-PC schon mindestens JRE installiert haben. Das kannst du aber NICHT als gegeben annehmen.
Jeder halbwegs nutzbare PC hat einen Browser, kann also eine Webanwendung nutzen. Andererseits installiert niemand ne JRE einfach mal so, sondern immer nur weil er sie für irgend was spezielles braucht.

Dann versuche ich noch einmal ein paar Anforderungen und Funktionen zu verfassen:
- Plattformunabhängig
- Verschiedene Tabellen aus MySQL Datenbank darstellen
- Werte aus den Tabellen in die Zwischenablage kopieren können
- Werte aus der Zwischenablage in die Tabellen kopieren können (à la Excel)
- Über die Dargestellten Tabellen Änderungen in der Datenbank machen

Wie stehen die Meinungen jetzt?
PHP, Ruby, Node.JS,.... serverseitig, stino HTML+CSS+JS clientseitig. Alles andere ist unsinnig.

Xkeks schrieb:
Dazu kannst du eine Webanwendung in der Größe wohl noch locker auf einem einfachen Webspace platzieren. Wenn du jedoch eine Serveranwendung enwickeln willst, wirds eher auf einen V-Server oder dedicated Server hinauslaufen und diese wollen ordenlich administriert werden! ;-) und kosten naürlich auch etwas bis deutlich mehr.
Extrem wichtiger Aspekt.
Einen Rootserver oder vServer zu administrieren ist eine monströse Aufgabe. Die Kiste muss man ganzheitlich gegen externe Angreifer absichern, man muss permanent wegen Updates gucken, man muss immer wieder mal Logs checken ob alles rund läuft,... Und natürlich kostet selbst ein vServer schon ne ordentliche Stange Geld.

Für das gegebene Projekt reicht n Standard-Hosting bei Strato, Hetzner oder sonstwas fürn 10er im Monat... vorausgesetzt, man geht den Webapp-Weg. Schreibt man hingegen eine eigene Serveranwendung muss man mit mehr als den vierfachen Kosten rechnen. Das ist es einfach nicht wert. Das will kein Kunde bezahlen.

Entweder du lernst eine der Webserver-Skriptsprachen nebst HTML/CSS/JS, oder du gibst das Projekt schlichtweg ab an jemanden, der sich damit auskennt. Wenn du bei so einem Projekt pfuschst ist im besten Falle nur dein Ruf total im Eimer, im schlimmsten Fall kriegst du berechtigte 4-5stellige Schadensersatz-Forderungen von Leuten, deren Adressdaten mal eben geklaut wurden. Es hat schon seinen Grund, warum selbständige Programmierer solch monströse Versicherungsprämien zahlen dürfen.
 
Irgendwie fühlt sich das gerade an, als hätte man meine Motivation auf einem OP-Tisch ausgeweidet und die Einzelteile auf dem Schwarzmarkt an Organhändler verkauft! :(

Fazit ist gerade, dass ich es komplett bleiben lasse, da ich so oder so nichts gescheites auf die Beine gestellt bekomme, das auch nur ansatzweise irgendwelchen Sicherheitsrichtlinien entspricht... -.-
 
Naja, soweit würde ich jetzt nicht gehen. Ich würde dir empfehlen eine Webanwendung zu schreiben. Grundsätzlich benötigst du dafür eine Datenbank (SQL), der Webserver und für den Webserver die eigentliche Webanwendung. Das ganze kannst du theoretisch sogar mit Java erstellen (wobei ich eher PHP oder ähnliches empfehlen würde - das kannst du "überall" ab 2 Euro hosten).

Du kannst ja erst mal alles offline einrichten (z.B. LAMP ist ein "One-Click-System"). Dann informierst du dich über die Grundlagen einer Datenbank (bzw. suchst nach Hilfe), machst dir Gedanken welche Daten du alles speichern möchtest, wie du sie in einer relationalen Datenbank abbildest, richtest in der DB die jeweiligen Tabellen ein und erstellst dann erst mal eine einfache Webseite wo du dich An- und Abmelden kannst. Von dort kannst du die Seite dann erweitern.

Wenn du das ganze mit jemanden machst, der Erfahrung mit Sicherheit im Web hat oder du ein entsprechendes Buch liest, sollte das schon passen.
 
Dir bleibt immer noch die Option, deine Ansprüche zu modifizieren und deinem Kunden eine Owncloud schmackhaft zu machen. Kostet nur die paar Kröten, die ein einfaches PHP+SQL - Hostingpaket so kostet. Dafür ist das Ding dann durchaus ausgereift und kann auch noch für mehr verwendet werden.

Oder du lernst über die nächsten Wochen eben PHP, Ruby, Perl oder Python sowie HTML/CSS/JS
 
Zurück
Oben