Wie haben Desktop-Anwendungen vor den Webservices mit dem Remote-Server kommuniziert?

11

Ich habe nicht viel Erfahrung mit Desktop-Anwendungen, aber wenn ich eine Client-Server-Desktop-App erstellen müsste, würde der Datenzugriff über einen Webservice erfolgen. Ich glaube, dass der Datenzugriff über einen Webservice Sicherheit bietet - ich muss den Benutzernamen und das Kennwort des Datenbankservers usw. nicht übergeben.

Wie haben Datenbankanwendungen dies vor Webservices getan? Wurden alle wichtigen Datenbankinformationen in die Installation der Desktop-App übernommen? Wenn ja, wie haben Programmierer den Sicherheitsaspekt verwaltet? Oder haben Programmierer etwas Ähnliches wie Webservices verwendet?

Heult Hagrid
quelle
5
Es gab lustige Dinge für Remoteprozeduraufrufe wie DCOM (Distributed COM), CORBA, Java RMI ... Ich habe keine davon vollständig verstanden, während es sofort Sinn machte, nach Daten über HTTP zu fragen. Ich denke, die tägliche Verwendung von Webbrowsern machte es einfacher, Webservices zu nutzen :-)
Marcus
3
@marcus: Wahrscheinlich, weil in HTTP eine Anforderungsantwort integriert ist, während "ein Protokoll über einen Socket" dazu führt, dass jeder das Rad in einer etwas anderen Form erfindet.
Steve Jessop

Antworten:

11

Je nachdem, was Sie einen Webdienst nennen.

Vor WSDL und REST gab es noch HTTP, sodass im Grunde alles, was Sie jetzt tun können, auch vorher erledigt werden konnte.

Es gab einen Mangel an Einheitlichkeit (weshalb WSDL und REST in erster Linie erstellt wurden), aber es bot das gleiche Maß an Datenvertraulichkeit und -sicherheit, von dem Sie sprechen.

Sie können auch die Verwendung von HTTP vermeiden: Sie können Ihr eigenes Protokoll erstellen und einen benutzerdefinierten Server und benutzerdefinierte Clients verwenden, die einen Socket für diesen Server öffnen und die benötigten Daten abrufen (oder die Daten veröffentlichen). Hier verlieren Sie alle Standardisierungsvorteile von HTTP, aber Sie geben den Clients erneut keinen Zugriff auf die Datenbank.

Arseni Mourzenko
quelle
17

Ah, damals, als wir Stöcke und Steine ​​hatten.

Vor dem Internet hatten wir eine sogenannte "Client / Server" -Architektur und lokale Netzwerke. Wenn Sie nicht versucht haben, eine Verbindung mit einem mehrere Meilen entfernten Server herzustellen, haben diese Netzwerke einwandfrei funktioniert, um fast alles zu erreichen. Sie können sogar Laufwerksbuchstaben herstellen und Verbindungen zu Dateiservern wie einer Remote-Festplatte verwenden, wenn Sie möchten. Wenn Sie waren einige Meilen entfernt, könnten Sie ein Wide Area Network nutzen im Wesentlichen die gleiche Sache zu tun, wenn auch mit einer geringeren Geschwindigkeit und zu höheren Kosten.

Die billige Möglichkeit, aus der Ferne zu sprechen, bestand darin, Informationen mit Geräten, die als Modems bezeichnet werden, über Telefonleitungen zu übertragen. Wenn Sie etwas einrichten möchten, bei dem zwei Computer über Computeranwendungen miteinander gesprochen haben, haben Sie dies genauso getan wie heute: durch Einrichten ein Kommunikationsprotokoll. Daran ist überhaupt nichts Magisches; Beide Seiten müssen sich nur darauf einigen, was alle Bytes bedeuten.

Schon in den frühen Phasen des Internets gab es Möglichkeiten für Maschinen, über das Internet zu kommunizieren. Web Services sind nur die neueste Version der Woche.

Robert Harvey
quelle
5
"Daran ist überhaupt nichts Magisches; beide Seiten müssen sich nur darauf einigen, was alle Bytes bedeuten." Und Endianness :)
hjk
2
@hjk, das ist einfach: Little-Endian ist offensichtlich allen anderen Optionen überlegen :-)
Mark
3
Ich würde sogar so weit gehen zu sagen, dass die Definition des Internets erfordert, dass es Möglichkeiten für Maschinen gibt, über das Internet zu kommunizieren. Wenn sie das nicht können, ist es nicht das Internet, sondern ein Bündel von Kabeln mit Größenwahn.
Steve Jessop
2
@SteveJessop: Du liegst falsch, " Es ist eine Reihe von Röhren ".
Deduplikator
3

Nur um zuerst einige Konzepte zu klären ...

Ich glaube, dass der Datenzugriff über einen Webservice Sicherheit bietet - ich muss den Benutzernamen und das Kennwort des Datenbankservers usw. nicht übergeben.

Ich denke, Sie bringen die Konzepte von (1) TLS ( Transport Layer Security) und (2) Zugriffskontrollen in der obigen Anweisung zusammen ... Ob ein Benutzername und ein Kennwort angegeben werden müssen oder nicht, hängt nicht davon ab, ob es sich um einen Webdienst handelt bereitgestellt durch (1) einen verschlüsselten Kanal und (2) Authentifizierung (z. B. einen API-Schlüssel).

Für einen extrem schlecht geschriebenen Webdienst müssen möglicherweise noch Kennwörter im Klartext über HTTP gesendet werden. Ein schlecht geschriebener kann dies über HTTPS tun (sicher, aber einmal gebrochen, z. B. durch einen Man-in-the-Middle- Angriff, der für Missbrauch offen ist). Ein besser geschriebener Webdienst sollte die Datenbankkonnektivität intern basierend auf anderen Eingaben, z. B. Sitzungs-IDs, verarbeiten, nachdem die Authentifizierungs- und Berechtigungskontrollen überprüft wurden.

Zurück zum Hauptpunkt: @ marcus 'Kommentar zu Ihrer Frage ist es im Wesentlichen. Sicherheitsaspekte werden nicht anders behandelt als "moderne" Technologien, und dies umfasst Implementierungsfragen wie:

  • Ob Ihr Kommunikationsprotokoll (ein wenig aus der Antwort von @ RobertHarvey entlehnt) die Übertragung verschlüsselter Daten unterstützt.
  • Die Nachrichtennutzlaststruktur , die zwischen dem Server und dem Client weitergeleitet wird.
    • Weist der Client den Server einfach an, die Wohnadresse dieses Benutzers beizubehalten oder eine Verbindung zu einer Datenbank unter IP X.X.X.Xmit einem Benutzernamen und einem Kennwort herzustellen und dann die Abfrage auszuführenINSERT INTO user_address ... ?
  • Wie der Server seine Datenbankkonnektivität verwaltet (die wirklich vom Client isoliert ist, siehe erster Absatz).

Für mehr Informationen:

hjk
quelle