Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   RAD-Server oder DataSnap (https://www.delphipraxis.net/204063-rad-server-oder-datasnap.html)

Stefan1286b 20. Apr 2020 17:13

Datenbank: MSSQL • Version: 2017 • Zugriff über: FireDAC

RAD-Server oder DataSnap
 
Ich hoffe mal ich habe die Kategorie korrekt gewählt.
Ich möchte auf unsere MSSQL-Datenbak via Mobiler App zugreifen. Und Frage mich nun, ob ich auf DataSnap oder eher auf den RAD-Server setzten soll.

mkinzler 20. Apr 2020 17:36

AW: RAD-Server oder DataSnap
 
RadServer basiert ja auf DataSnap (bzw. verwendet es).
Ob DataSnap reicht (oder eine andere REST-basierte Lösung kommt auf den Anwendungszweck an.

TurboMagic 20. Apr 2020 19:34

AW: RAD-Server oder DataSnap
 
RAD Server ist glaube ich eine ganze Middleware inklusive Benutzerverwaltung usw.
Evtl. könnte Herr Eissing hier etwas zu den Unterschieden schreiben...

mytbo 20. Apr 2020 20:00

AW: RAD-Server oder DataSnap
 
Hallo!

Oder wenn es auch etwas anderes sein kann, mit mORMot:
https://synopse.info/fossil/wiki?name=Downloads
https://synopse.info/forum/

Bis bald...
Thomas

Stefan1286b 20. Apr 2020 22:28

AW: RAD-Server oder DataSnap
 
Bei Datasnap müsste ich mich um die Benutzerverwaltung selber kümmern korrekt. Bei Rad-Server ist die inkludiert in einer Interbase-DB

olaf 21. Apr 2020 05:34

AW: RAD-Server oder DataSnap
 
Wir benutzen Dataabstract von Remobjects. Hervorragender Support.

MEissing 22. Apr 2020 06:58

AW: RAD-Server oder DataSnap
 
RAD Server kann "nur" ReST/JSON, DataSnap kann da mehr (direkt, TCP/IP, Binary, ....)

DataSnap ist aber relativ rudimentär (keine Benutzer Autorisierung, Authentifizierung, Statistiken, ....muss man alles selber basteln)
DataSnap ist mehr ein "SDK", als eine Turn-Key-Infrastructure

RAD Server kosten aber Geld (bei Enterprise Edition ist eine Deployment Lizenz dabei; bei Architect Edition beliebig viele(!!); es lohnt sich also evtl eine Architect Edition sich in den Schrank zu stellen :wink:)

http://docwiki.embarcadero.com/RADSt...ch_zu_DataSnap

...ist etwas "dünn".

RAD Server zu implementieren ist aber relativ einfach.... auch/insbesondere um bestehende Business-Logik weiterzuverwenden.

Lesenswert, Direktlink:
http://altd.embarcadero.com/releases...er%20eBook.pdf

himitsu 1. Dez 2020 15:40

AW: RAD-Server oder DataSnap
 
Schade: Da der RAD-Server ja DataSnap verwendet, wäre ich davon ausgegangen, dass es auch Binär kann und nicht nur REST nutzt.

Zitat:

Zitat von MEissing (Beitrag 1462635)
DataSnap ist aber relativ rudimentär (keine Benutzer Autorisierung, Authentifizierung, Statistiken, ....muss man alles selber basteln)

Also Property/Events/Events dafür sind schon enthalten und man muß nicht komplett alles selbst machen.
Diese Ereignisse sind aber leer und man muß darin dann selber den Username+Passwort gegen irgendwas prüfen. (könnte man z.B. einfach über ein SELECT die Nutzerverwaltung seiner Datenbank oder vom Windows verwenden)
Die Zugriffskontrolle auf Serverklassen/Methoden kann man über ein Event und/oder via [Attribute] regeln.

DataSnap nutzt für Binär das DBX (dbExpress).

Will man auch Streams (z.B. von seinem eigenen DMS) mit über DataSnap laufen lassen, dann ist Binär besser, denn über REST ist es extremst-ultra-langsam.
Außnahme im DataSnap mit REST-Anbindung: TStream als Result (einziger VAR/OUT-Parameter), dort wird kein JSON ausgegeben, sondern direkt das Binäre.

HTTPS gibt es inzwischen auch und man kann sowohl bei Binär (TCP/IP), als auch beim JSON (HTTP/HTTPS), eine Komprimierung (ZLib) und eine Verschlüsselung (RSA) aktivieren.




OnUserAuthenticate = beim Connecten des DataSnap-Client das User+Pass prüfen und Valid setzen (optional auch die UserRoles füllen)
OnUserAuthorize = bei Aufruf einer Methode die Erlaubnis prüfen (geht auch autoamtisch über
Delphi-Quellcode:
[TRoleAuth(...)]
)

Inzwischen hat man diese Methoden, welche der Experte generiert, mit Kommentaren gefüllt, die auch im TODO-Manager vom Delphi auftauchen. :angle:
Delphi-Quellcode:
// im DataSnap-ServerModul

procedure TServerContainer1.DSAuthenticationManager1UserAuthenticate(
  Sender: TObject; const Protocol, Context, User, Password: string;
  var valid: Boolean; UserRoles: TStrings);
begin
  { TODO : Validieren Sie den Client-Benutzer und das Passwort.
    Wenn eine rollenbasierte Autorisierung erforderlich ist, fügen Sie dem Parameter UserRoles Rollennamen hinzu }
  valid := True;
end;

procedure TServerContainer1.DSAuthenticationManager1UserAuthorize(
  Sender: TObject; EventObject: TDSAuthorizeEventObject;
  var valid: Boolean);
begin
  { TODO : Autorisieren Sie einen Benutzer zum Ausführen einer Methode.
    Verwenden Sie Werte von EventObject, wie z.B. UserName, UserRoles, AuthorizedRoles und DeniedRoles.
    Verwenden Sie DSAuthenticationManager1.Roles zum Definieren von 'Authorized'- und 'Denied'-Rollen
    für bestimmte Servermethoden. }
  valid := True;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz