Java Server - IOS Client Applikation

Argonox

Mitglied
Hallo zusammen,

Ich bin derzeit dabei, eine Java Server <> IOS Client (später auch Web-Clients) Applikation zu konzeptionieren.

Ich bin mit den Technologien noch nicht wirklich vertraut, möchte mich aber ungern in etwas reinarbeiten um im nachhinein festzustellen, dass ich auf einem komplett falschen Pfad bin.

Was für mich noch nicht hundertprozentig klar ist, betrifft die Kommunikation zwischen IOS und Java Server.

Folgender Plan:

IOS APP mit JSON Schnittstelle <> Java Servlet auf JSON(GSON) Basis <> Java Applikation <> PostgreSQL Server

klingt das für euch vernünftig?

vielen Dank und beste Grüße,
Argonox
 
Zuletzt bearbeitet:

Bizarrus

Bekanntes Mitglied
Imprinzip bist du schon auf dem richtigen weg.
Ich selber habe bereits ein Chatsystem erstellt gehabt, was auch über iOS läuft.

Java-Seitig wäre es am besten, du arbeitest mit Sockets. Ich selber arbeite über Bytebasierten Sockets, es werrden halt Byte-Arrays versendet und empfangen.

Unter iOS könnte ich dir später mal einige Beispiele senden, bin aber gade in einem Meeting :p
 

Argonox

Mitglied
Hallo Bizarrus!

vielen Dank schonmal dafür :).

Gerne, Beispiele sind natürlich immer willkommen :)

Zu den "Sockets":
Ich habe mal gelesen, dass man es sich mit Bytebasierten Sockets unnötig kompliziert macht? Wie siehst Du das?

Desweiteren plane ich ja zu einem späteren Zeitpunkt auch einen Web-Client (JQUERY/AJAX) anzubinden und denke daran, die gleiche Schnittstelle wie für IOS zu nutzen.

Dann hätte ich noch die Sorge, dass es dann zu Firewall Problemen kommen könnte.

besten Dank und Grüße,
Argonox
 

Bizarrus

Bekanntes Mitglied
Hallöle :)
Bin leider noch nicht zuhause, sonst hätte ich dir schon etwas zusammen gestellt - Mein Macbook liegt leider zuhause :p

Ich habe mal gelesen, dass man es sich mit Bytebasierten Sockets unnötig kompliziert macht? Wie siehst Du das?
Das kommt immer darauf an, was man genau machen möchte und in wiefern man Erfahrungen mit den Themen gesammelt hat.

Desweiteren plane ich ja zu einem späteren Zeitpunkt auch einen Web-Client (JQUERY/AJAX) anzubinden und denke daran, die gleiche Schnittstelle wie für IOS zu nutzen.
Das wäre dann zum beispiel schlecht, hier Sockets zu verwenden.
Warum nutzt du dann nicht einfach etwas anderes? Beispiel wäre PHP.
Es wäre viel einfacher die Daten direkt mit einem Webserver hin und her zu schieben, wenn du ohnehin schon vor hast Webbasiert damit arbeiten zu wollen.

Denn du müsstest nun weiter denken: Dein "Java Server" müsste ohnehin alle die Funktionen implementiert haben, Plaintext in Form von JSON auszugeben. Ob du nun einen kleinen Webserver über Java schreibst, der das gleiche macht wie dein Webspace/Server wäre also unnötige Zeitverschwendung.

Dann hätte ich noch die Sorge, dass es dann zu Firewall Problemen kommen könnte.
Diese Bedenken kann ich leider nicht teilen. Ob nun Anfragen über den Webserver laufen oder über Sockets ist irrelevant, schon alleine weil die Verbindung ohnehin bestehen muss. Gut, was vllt. sein kann ist, dass du Lokal die Ports nach außen öffnen müsstest, sofern du ein eigenen Server schreiben möchtest.
 

Hotspott

Mitglied
Ich kann leider kein Objectiv C für iOS Apps, aber auch Apple wird Frameworks haben um direkt mit einem SQL Server zu kommunizieren aus einer App hinaus.

Also ist doch der naheliegenste weg wenn du auch noch ein Webinterface haben willst:

iOS App <> SQL Server <> Webinterface
 

Templarthelast

Bekanntes Mitglied
Ich finde Webservices wie Rest wesentlich leichter und angenehmer als Sockets bzw. Servlets und mit Rest hättest du die Möglichkeit mit der gleichen Backendstruktur android-/web-Applikation zu erstellen.
 

Bizarrus

Bekanntes Mitglied
Wie TKausL bereits sagt:
Man verwendet NIEMALS eine direkte Datenbank-Verbindung bei Clients.

Zwar können iOS Apps noch nicht "dekompiliert" werden, sondern nur "disassembled" werden, aber das Mitsniffen wäre eine möglichkeit an einer bestehenden MySQL-Connection teilzunehmen.

Ganz anders würde es mit Android auf Java-Basis aussehen, denn Java kann generell dekompiliert werden, selbst wenn durch einige Verschlüsselungsmethoden/Protecting die Source "unleserlich" kompiliert wird. Bei derartige verfahren wird auch nur das Dekompilieren etwas erschwert, was allerdings keinen daran hindern würde, die MySQL-Daten zu erforschen.

Der simpleste Weg wurde ja bereits von mir genannt: Man nehme ein Webserver (Der vllt. so oder so schon zur verfügung steht) und lässt die Daten via JSON hin und her rutschen. Dies ist die einfachste und vor allem Leistungsärme Methode.

Du musst ja auch daran denken, dass man eventuell mobil surft und kein WiFi Netzwerk in der nähe hat.
Da wäre ein Datenaustausch über XML Beispielsweise wiederrum zu groß, schon alleine weil ein XML-Dokument eine vielzahl mehr an Daten ausgibt (Die ganzen Tags & co).
 

Argonox

Mitglied
Hallo zusammen!

zum Thema PHP oder Java:
Ziel ist es, eine kleine ERP Anwendung (bis zu 100 clients) zu entwickeln. In Zukunft soll es auch um Schnittstellenmodule erweitert werden, welche beispielsweise auch das Anbinden von Barcode Scannern ermöglichen soll.

Mir sind Performance, Sicherheit und Wartbarkeit wichtig. Mein Gefühl sagt mir, dass ich in dem Fall besser mit Java fahre als mit PHP. Aber das ist nur ein Gefühl und hoffe, dass ihr mir aus Erfahrung sagen könnt, was in dem Fall geeigneter ist.

Warum keine direkte SQL Anbindung:
Sicherheitsrisiko... Des weiteren soll es eine klare Trennung von User-Interface und Anwendungslogik geben.

beste Grüße,
Argonox
 

Hotspott

Mitglied
Aber ein socket kann man genauso sniffen, genauso wie alles andere was durch ein Netzwerk geht. Da ist von de Sicherheit her kein Unterschied zu allen anderen Methoden. Natürlich sollte man mit Verschlüsselungen arbeiten, wenn man etwas sicheres auf die Beine stellen will.
 

TKausL

Top Contributor
Aber ein socket kann man genauso sniffen, genauso wie alles andere was durch ein Netzwerk geht. Da ist von de Sicherheit her kein Unterschied zu allen anderen Methoden. Natürlich sollte man mit Verschlüsselungen arbeiten, wenn man etwas sicheres auf die Beine stellen will.

Bei einem Socket kann der Server aber entscheiden ob eine anfrage zulässig ist oder nicht, bsp. einen punktestand eintragen. Der SQL-Server würde allerdings ein DELETE FROM table; einfach so durchlassen.
 

Hotspott

Mitglied
Doch das kann er, auch für SQL gibt es Benutzer und Benutzergruppen. SQL ist weit aus umfangreicher als manche denken. So kann man einen Admin anlegen und ein Benutzer welcher nur Insert und Select darf und durch diesen greift die App zu. In Kombination mit einer Verschlüsselten Verbindung sollte das doch reichen oder nicht?

P.S. Eine Verbindung zu einem SQL Server ist ja auch nur ein Socket.
 
T

tröööt

Gast
@Hotspott
du rallst das nich was hier in punkto sicherheit scheif gehen kann oder ?

wenn man dem clienten einen sql-user direkt mitgibt kann man mit diesem alle ops durchführen die der server zulässt ...

alleine der punkt datenbank-verbindungen von außerhalb zuzulassen stellt schon ein enormes risiko dar ... darum sollte in der host-liste eh nur "localhost" stehen um verbindungen von außen gänzlich zu unterbinden ... und natürlich auch firewall nach außen hin dicht machen ... und stattdessen immer einen webservice nutzen

und auch wenn man einen sql-user stark einschränkt (als ob wir hier davon reden dem client ROOT zu geben) bleibt ein rest-risiko statements auszuführen die so nicht gewollt sind ... und der sql-server selbst kann hier nicht eingreifen ...

sowas geht dann eher nur mit zwischen-services die die anfrage auch prüfen ob diese auch so gültig ist ... natürlich muss hier auch gegen sql-injection vorgesorgt werden ... aber das ist relativ einfach ...
 

Hotspott

Mitglied
Ne versteh ich momentan auch nicht. Wofür gibt es die Funktion in SQL dann? Ich meine so ist der Unterachied zu einem WebService der auch nur den Benutzer identifiziert und dementsprechende rechte vergibt.
 
T

trööt

Gast
gut ... wenn du nicht verstehst warum es ein solches sicherheitsrisiko ist direkt eine SQL-verbindung zu nutzen frag mal google ... es gibt genug beispiele ...

und selbst wenn du es komplett einschränkst das ein user z.b. nur SELECT aus einer bestimmten tabelle einer bestimmten datenbank lesen darf ... so kann man mit diesem dann aber immer noch ALLES lesen was eben in genau dieser tabelle steht ... was gerade bei multi-user software schwer wird wenn du nicht unbedingt für wirklich jeden user des systems einen eigenen sql-user mit eigener datenbank/tabelle anlegen willst ... und selbst dann bliebe noch ein gewisses rest-risiko durch fehler in der datenbank selbst ...

webservices nutzt man in der regel genau dann wenn der client lediglich ein paar parameter ans backend übergeben soll das dann für ihn die entsprechenden informationen aus der datenbank liest und ihm zur verfügung stellt ...

ich glaube du stellst dir das alles etwas zu einfach vor ...
stell dir doch nur mal alleine facebook (bzw dessen smartphone-app) vor ...
wenn jede dieser apps einen direktzugang zur datenbank hätte ... dann bräuchte facebook auch entsprechend viele datenbank-user mit speziellen rechten ...
alleine die kommunikation zwischen zwei personen wäre äußerst schwierig ... auch wenn es zwischen INSERT und DELETE einen unterschied gibt (obwohl beides schreibend ist) ...
außerdem müsste man dann für jede verknüpfung von person zu person extra tabellen anlegen ... und so weiter und so fort ...
würde man es wirklich so umsetzten würde man damit die datenbank aber so schnell in die knie zwingen das es bei der wachstumsrate von facebook nicht mal möglich wäre rechtzeitig neue resourcen bereitzustellen ...

deutlich einfacher ist es wenn facebook hier als zentraler webservice dient und ledilglich ein paar parameter des users entgegen nimmt um z.b. einem freund eine pn zu schreiben ...

mag sein das es vielleicht bei 5 oder 10 usern nicht auffällt ... aber spätestens ab einer gewissen grenze wird es zu komplex ...
 

Hotspott

Mitglied
Ja klar für noch wieviele Tausende User ist das keine gute Lösung.
Ich gebe mich geschlagen. War ja nur ein Vorschlag für eine schnelle Lösung bin nicht von so vielen Usern die Saatsgeheimnise austauschen, aus gegangen ;)
 

Templarthelast

Bekanntes Mitglied
Es ist einfach nur Dumm. Genauso wie keinen Zaun gegen Einbrecher zu bauen, weil es ja sowieso noch nie passiert ist bzw. das doch sowie so keiner macht. Ich will jetzt nicht die ganze Menschheit schlecht machen, aber man muss für alle Fälle vorkehrungen treffen.

Frei nach dem Motto: Auf das schlimmste Vorbereitet sein und auf das Beste hoffen.
 
B

Bizzi

Gast
Wow, da überlegt jemand nicht. Weiter oben sagte jemand, warum SQL überhaupt für Java angeboten wird. Überlg mal: Es gibt nicht nur hirnrissige Programme, die direkt auf SQL zugreifen...

Genauso kann man auch komplexe Server/Clientarchitekturen verwenden, wo NUR serverseitig SQL zur verfügung steht, warum? Security!

Man darf ruhig schon mal genauer überlegen. Bloss derartie Themen sind komplex, schon alleine für anfänger.

Tatsache ist: Datenbankverbindungennwerden AUSSCHLIESSLICH Serverseitig angewendet. Zu keinem Zeitpunkt darf der Client auf die Datenbank zugreifen. Mögliche SQL-Querys werden immer ausschliesslich Serverseitig behandelt.
 
T

tröööt

Gast
Wow, da überlegt jemand nicht. Weiter oben sagte jemand, warum SQL überhaupt für Java angeboten wird. Überlg mal: Es gibt nicht nur hirnrissige Programme, die direkt auf SQL zugreifen...

Genauso kann man auch komplexe Server/Clientarchitekturen verwenden, wo NUR serverseitig SQL zur verfügung steht, warum? Security!

Man darf ruhig schon mal genauer überlegen. Bloss derartie Themen sind komplex, schon alleine für anfänger.

Tatsache ist: Datenbankverbindungennwerden AUSSCHLIESSLICH Serverseitig angewendet. Zu keinem Zeitpunkt darf der Client auf die Datenbank zugreifen. Mögliche SQL-Querys werden immer ausschliesslich Serverseitig behandelt.

QFT
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D WebSocket Server mit HTML Client und Java Server Netzwerkprogrammierung 5
H Socket Chat entwickeln mit Java Server Client Netzwerkprogrammierung 4
M Socket Verbindung Matlab(Server) Java(Client) Netzwerkprogrammierung 1
F Socket Java - Server/Client simple Netzwerkprogrammierung 1
D TCP Verbindung (Java Client und Visual Basic Server) Netzwerkprogrammierung 12
J HTTP Java Client / Server Internet - Webshare ?! Netzwerkprogrammierung 9
L C# WCF Server und Java Client? Netzwerkprogrammierung 2
N Socket Java server c# client problem Netzwerkprogrammierung 7
M client server in java Netzwerkprogrammierung 4
I Java Client - C Server Netzwerkprogrammierung 8
H Java.nio Server, Java.io Client Netzwerkprogrammierung 3
R Kommunikationsproblem zwischen JAVA-client und C-Server Netzwerkprogrammierung 5
M Java XML-RPC Server - PHP XML-RPC Client ? Netzwerkprogrammierung 8
F Java Client-Server-Client Verbindung Netzwerkprogrammierung 9
R Java Applikation als Client ,Servlet als Server: Problem? Netzwerkprogrammierung 3
S Kommunikation Fortran <-> Java auf Client-Server-Archi Netzwerkprogrammierung 2
JaXnPriVate Java HTTPS Server (Secure Sockets) Netzwerkprogrammierung 15
S Von Java auf passwortgeschützten Server zugreifen + Umgang mit Ports Netzwerkprogrammierung 28
S Probleme bei Java-Installation auf Server (Linux/Shell/Terminal) Netzwerkprogrammierung 6
S Java: Anbindung an einen realen Server? (+ Portfreigabe) Netzwerkprogrammierung 8
S HTTP Post?!? - Java Server Netzwerkprogrammierung 7
F Verbindung zu einem LDAP Server über Java Netzwerkprogrammierung 4
F Server für Java Applikationen Netzwerkprogrammierung 16
T Mikrofonaudio über Java Server an Webbrowser streamen Netzwerkprogrammierung 13
Aruetiise Socket Java Programm auf Server Netzwerkprogrammierung 3
S Java Chat Server Netzwerkprogrammierung 8
M Java Eingabe auf FTP Server übergeben Netzwerkprogrammierung 4
M Socket Java Server: NullPointerException Netzwerkprogrammierung 4
J Java Server empfängt php inhalt nicht Netzwerkprogrammierung 1
X Mit Java eine Applikation auf einem anderen Windows Rechner (Windows Server 2008) starten Netzwerkprogrammierung 1
F Socket Java Server mit Android App, Antwort vom Server an App Netzwerkprogrammierung 5
F Java Server Scanner oder InputStream kann nicht gelsesen werden! Netzwerkprogrammierung 6
H Socket Java | Server sendet Nachricht nur wenn vorher eine JOptionPane-Nachricht ausgegeben wurde. Netzwerkprogrammierung 2
G Multiple Clients and one Server --> java.lang.NullPointerException Netzwerkprogrammierung 1
E Java Server übers Internet erreichen Netzwerkprogrammierung 4
C Kostenloser Java-Server? Netzwerkprogrammierung 25
H Socket Java Chat - Verbindung zum Server fehlgeschlagen. Netzwerkprogrammierung 5
P FTP Server mit Java, möglich ? Netzwerkprogrammierung 4
N über Java in eine Text-Datei auf einem Server schreiben Netzwerkprogrammierung 2
F Java SMTP Server Netzwerkprogrammierung 9
S Socket Java Server StreamCorruptedException Netzwerkprogrammierung 7
P Java Programm als Dienst auf Server Netzwerkprogrammierung 11
P Java Web Server Netzwerkprogrammierung 3
D Umwandlung von Java WebStart zu Java Server Pages Netzwerkprogrammierung 6
W Terminal-Server (Windows 2003) und Java Netzwerkprogrammierung 9
E java.net.SocketException: Unexpected end of file from server Netzwerkprogrammierung 2
H Mit Java ein JPG auf einem Server öffnen. Netzwerkprogrammierung 7
A Java-Programm auf einem Server laufen lassen Netzwerkprogrammierung 9
M Java Server mit verschiedenen Kommunikationsmöglichkeiten Netzwerkprogrammierung 6
E Java Server via Swing offline setzen Netzwerkprogrammierung 4
J Server soll Zugriff auf Java Programm ermöglichen Netzwerkprogrammierung 3
D Server Socket läuft nicht -> java.net.SocketException: Netzwerkprogrammierung 4
N eigener Java-Server => PHP einbauen Netzwerkprogrammierung 67
S MySQL, PHP, Perl Support in einem Java HTTP Server? Netzwerkprogrammierung 7
D HTTP Apache-HttpClient/UNAVAILABLE (java 1.4) Netzwerkprogrammierung 18
M JAX-WS unter Java 17 plötzlich nicht mehr möglich Netzwerkprogrammierung 5
K Java RMI bricht ab wenn Remote eine Methode ausgeführt werden soll Netzwerkprogrammierung 5
M HTTP Let's Encrypt und Java Trust-Store Netzwerkprogrammierung 6
Tobero Java serversocket nicht nur zuganglich für localhost Netzwerkprogrammierung 6
D path-Variablen in eine URL hinzufügen mit Java 1.8 Netzwerkprogrammierung 2
x46 Java SSLContext erstellen mit SSL-Zertifikat Netzwerkprogrammierung 1
P Jenkins Login per Java Download Manager Netzwerkprogrammierung 15
N Java socket Programmierung Filme verschicken Netzwerkprogrammierung 20
K Java Websocketserver Problem | Android to Pi Netzwerkprogrammierung 1
R Anfängerbeispiel: Suche Java-Anwendung die http-Anfragen in Tomcat liest Netzwerkprogrammierung 8
V Browsergame mit Java(WebSocketServer) als Backend? Netzwerkprogrammierung 5
platofan23 Socket Java Socket mit DynDns nicht erreichbar Netzwerkprogrammierung 6
S Fragen zu Java Webservice mit Axis2 Netzwerkprogrammierung 0
M Mit Java Mail Mails an Webmailer schicken Netzwerkprogrammierung 1
mor16Euro HTTP Php website mit Java aktualisiern Netzwerkprogrammierung 6
T HTTP JAVA Browser Konsolenanfrage(JavaScript) Netzwerkprogrammierung 7
L Socket Wie kann man in Java die Anzahl der Objekte in einem InputStream sehen ohne ihn durchgehen zu müssen Netzwerkprogrammierung 1
M Socket peer to peer Verbindung zwischen Java und Matlab Netzwerkprogrammierung 0
L Remote Desktop per Java steuern Netzwerkprogrammierung 4
J Webserver mit Java schreiben? Netzwerkprogrammierung 4
D JAVA RMI Netzwerkprogrammierung 1
K HTTP Mit Java HTML Codeauslesen um damit zu arbeiten Netzwerkprogrammierung 7
V Kann man mit Hilfe eines Java-Programms den Zugriff auf bestimmte Internetseiten verhinden? Netzwerkprogrammierung 3
J HTTP [Java 9] Neuer HTTP Client - Tutorial Netzwerkprogrammierung 3
A Bestimmter URL/Certificate per Java immer vertrauen (Trustmanager/HostnameVerifier) Netzwerkprogrammierung 1
T VPN-Verbindung über Java Netzwerkprogrammierung 4
M HTTP PATCH Request mit Java ausführen Netzwerkprogrammierung 2
Niggo_ Probleme mit Java Mail Netzwerkprogrammierung 14
L FTP Java Interpreter unterbindet SSL Handshake Netzwerkprogrammierung 2
C IFrame mit java auslesen Netzwerkprogrammierung 1
A FTP wie kann ich von java auf datei in fpt://192.168.178.1 lesen/schreiben? Netzwerkprogrammierung 3
C Datensammlung mit Java RMI Netzwerkprogrammierung 0
K Java Jsoup : OnLoad Netzwerkprogrammierung 0
Carres HTTP Vorhandenen Session-ID Cookie von Firefox, Chrome oder IE in Java verwenden Netzwerkprogrammierung 2
B Java+Grbl: G-Code Befehle mit Java an Arduino senden und lesen Netzwerkprogrammierung 1
Z HTTP HTML Element auslesen in Java Netzwerkprogrammierung 1
T Socket Java Programm hängt sich auf bei dem versuch von einem Socket scanner Daten zu erhalten. Netzwerkprogrammierung 1
Thallius HTTP HTTPS unter Java 1.6 schlägt fehl Netzwerkprogrammierung 4
Thallius Java Application über ZScaler benutzer? Netzwerkprogrammierung 0
P Chat in Java Netzwerkprogrammierung 3
C java.net.ConnectException: Operation timed out? Netzwerkprogrammierung 2
T curl request in java umwandeln Netzwerkprogrammierung 4
I Socket Kommunikation C / Java Netzwerkprogrammierung 2
H Machbarkeitsfrage: TCP/IP Client (z.B. Netty) für Java Web Applcation Netzwerkprogrammierung 1
L Java RMI Objekt konsistenz Netzwerkprogrammierung 1

Ähnliche Java Themen

Neue Themen


Oben