AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Client/Server Architektur realisieren - Ideen
Thema durchsuchen
Ansicht
Themen-Optionen

Client/Server Architektur realisieren - Ideen

Ein Thema von TheMiller · begonnen am 5. Dez 2014 · letzter Beitrag vom 28. Dez 2014
Antwort Antwort
Seite 6 von 10   « Erste     456 78     Letzte »    
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#51

AW: Client/Server Architektur realisieren - Ideen

  Alt 15. Dez 2014, 11:39
Wenn die REST-API LongPolling kann wofür in Gottes Namen dieser Windows-Dienst?

Mehr Komplexität?

Und der Service soll auch noch direkt mit dem Datenbank-Server sprechen, also an der REST-API (Zwischenschicht) vorbei?

Respekt, so kann man viele Vorteile der Zwischenschicht auch gleich wieder mit dem Hintern einreissen

Ich hätte ja noch verstanden, wenn man, aus welchen Gründen auch immer, den Windows-Service per LongPolling mit der Zwischenschicht verbindet. Aber so ist das ein tolles Beispiel, wie man so etwas nicht machen sollte.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#52

AW: Client/Server Architektur realisieren - Ideen

  Alt 15. Dez 2014, 11:43
Ja sorry, du hast natürlich recht. Da habe ich mich vertran. Der Service soll auch nicht direkt mit der Datenbank sprechen. Die Kommuniaktion geht nur über die API. Aber irgendwie muss ich es realisieren, dass der Service prüft (ping o.ä.), ob die Datenbank erreichbar ist. Mehr soll der Service nicht mit der DB direkt machen. Das könnte man ja auch über einen API-Aufruf prüfen - da fällt der Ping weg, der ohnehin nichts darüber aussagt, ob die DB funktioniert/erreichbar ist.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#53

AW: Client/Server Architektur realisieren - Ideen

  Alt 15. Dez 2014, 12:12
Ja sorry, du hast natürlich recht. Da habe ich mich vertran. Der Service soll auch nicht direkt mit der Datenbank sprechen. Die Kommuniaktion geht nur über die API. Aber irgendwie muss ich es realisieren, dass der Service prüft (ping o.ä.), ob die Datenbank erreichbar ist. Mehr soll der Service nicht mit der DB direkt machen. Das könnte man ja auch über einen API-Aufruf prüfen - da fällt der Ping weg, der ohnehin nichts darüber aussagt, ob die DB funktioniert/erreichbar ist.
Hört sich ja schon besser an, allerdings ist das Benachrichtigungs-System wie du das skizzierst hast etwas ... seltsam.

Wenn du die Nachrichten jetzt pro Modul sendest, dann zieht ja jedes neues Modul eine Änderung in der Nachrichten-Struktur mit sich. Da wäre es doch besser, einfach Nachrichten zu schicken, wenn sich die Daten geändert haben. Das Modul selber bekommt dann diese Information mit, und entscheiden ob es damit etwas zu tun hat oder nicht. Hat es, dann lädt es die betroffenen Daten neu, wenn ich, dann eben einfach nicht.

Erweiterst du jetzt die Module, dann brauchst du das in der Benachrichtigung nicht zu berücksichtigen, denn die Module bekommen das schon mitgeteilt.

Zudem würde ich diese Benachrichtigungen sowieso an die Zugriffs-Interfaces verteilen, wo ich dann jeder den es interessiert registrieren kann.
Delphi-Quellcode:
TDataChangedEventArgs = class( TEventArgs )
  property Action : TDataAction read FAction; // Added, Changed, Removed
  property DataId : TDataId read FDataId;
end;

TDataChangeEventHandler = reference to procedure( const Sender : TObject; e : TDataChangedEventArgs );

IMyRepository = interface
  procedure Get( DataId : TDataId; out Data : TData );
  property DataChanged : IEvent<TDataChangedEventArgs>;
end;
An den DataChanged Event kann sich jeder dranhängen, der das wissen muss und entsprechend reagieren. Das Repository kümmert sich um den Empfang der Nachricht und verteilt diese. Schon können auch neu erstellte Module einfach so auf diese Nachrichten reagieren.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#54

AW: Client/Server Architektur realisieren - Ideen

  Alt 15. Dez 2014, 12:27
Kleine Anmerkung:

Bevor ich mir einen Service schreiben würde, der per TCP mit den Clients kommuniziert, benutze ich lieber die Microsoft MessageQueue und der Drops ist gelutscht. Jeder Client bekommt eine Queue und für Rückmeldungen auch der Service.

Der Service spricht jetzt mit der REST-API und füllt die MessageQueues der Clients. Die Clients holen sich die Informationen aus Ihrer MessageQueue ab.

Das ist schneller implementiert und vor allem robuster als das mit dem TCP-Client/Server.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#55

AW: Client/Server Architektur realisieren - Ideen

  Alt 15. Dez 2014, 12:51
Zitat von Sir Rufo;1283452Bevor ich mir einen Service schreiben würde, der per TCP mit den Clients kommuniziert, benutze ich lieber die [URL="http://technet.microsoft.com/de-de/library/cc771474.aspx":
Microsoft MessageQueue[/URL] und der Drops ist gelutscht.
Ist aber dann - wie ich meine - zu stark an Windows gebunden (ok ein Service auch) aber per TCP kann man auf anderen Plattformen entweder die Routinen dabei linken oder in eine externe App auslagern. Ohne die Kommunikation zu ändern.

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.594 Beiträge
 
Delphi 11 Alexandria
 
#56

AW: Client/Server Architektur realisieren - Ideen

  Alt 15. Dez 2014, 13:13
Kleine Anmerkung:

Bevor ich mir einen Service schreiben würde, der per TCP mit den Clients kommuniziert, benutze ich lieber die Microsoft MessageQueue und der Drops ist gelutscht. Jeder Client bekommt eine Queue und für Rückmeldungen auch der Service.

Der Service spricht jetzt mit der REST-API und füllt die MessageQueues der Clients. Die Clients holen sich die Informationen aus Ihrer MessageQueue ab.

Das ist schneller implementiert und vor allem robuster als das mit dem TCP-Client/Server.
Vielleicht auch ein Blick Wert: https://www.habarisoft.com/index.html
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#57

AW: Client/Server Architektur realisieren - Ideen

  Alt 15. Dez 2014, 14:35
Zitat von Sir Rufo;1283452Bevor ich mir einen Service schreiben würde, der per TCP mit den Clients kommuniziert, benutze ich lieber die [URL="http://technet.microsoft.com/de-de/library/cc771474.aspx":
Microsoft MessageQueue[/URL] und der Drops ist gelutscht.
Ist aber dann - wie ich meine - zu stark an Windows gebunden (ok ein Service auch) aber per TCP kann man auf anderen Plattformen entweder die Routinen dabei linken oder in eine externe App auslagern. Ohne die Kommunikation zu ändern.

Mavarik
Natürlich, weil die Mobile Devices immer eine ganz hervorragende Netzwerkverbindung haben. Sehr stabil und immer verfügbar. Und wir machen uns zusätzlich noch einen Port auf damit die darüber auch mit dem Windows-Service sprechen können.

Mobile Devices dürfen bei mir nur über HTTP(S) kommunizieren. Z.B. mit der REST-API. Wenn die eine Instant-Benachrichtigung benötigen, dann benutzte ich die Push-Dienste (dafür sind die wohl auch gedacht, gelle) und die werden von der REST-API dann auch gleich benachrichtigt/gefüttert.

Also wofür wird der Windows-Dienst jetzt nochmal benötigt?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#58

AW: Client/Server Architektur realisieren - Ideen

  Alt 15. Dez 2014, 14:42
Also wofür wird der Windows-Dienst jetzt nochmal benötigt?
So wie ich das verstanden habe, stellt doch der Windows-Dienst die Zwischenschicht zwischen Client und Datenbank-Server dar. Der Cleint sendet die Anfrage an die Zwischenschicht, diese leitet sie an den Datenbank-Server weiter.

Darüber hinaus wollte ich doch noch Datensicherung, Chats, Userverwaltung (Online/Offline-User nebst gültiger IP/VPN-IP), Nachrichtengrabber (enorm wichtig für das Projekt), Update-Service, etc.pp. darüber laufen lassen. Oder nicht?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#59

AW: Client/Server Architektur realisieren - Ideen

  Alt 15. Dez 2014, 14:48
Und so wie ich das verstanden habe, willst du eine REST-API vor den Datenspeicher setzen.

Oder wo und was macht die da?

Egal ob Update, Chat, was auch immer, es geht im Grunde immer um Daten holen und Daten speichern. Kann so eine REST-API auf jeden Fall.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#60

AW: Client/Server Architektur realisieren - Ideen

  Alt 15. Dez 2014, 16:11
Genau, die REST-API liegt auf dem Apache-Web-Server auf der Linux-Maschine. Dort liegt auch die MySQL-Datenbank. Auf dem Windows-Server - so dachte ich - ist der Windows-Server-Dienst meines Programmes installiert, der für die Clients mit der API kommuniziert und die Anfragen/Antworten hin und her sendet.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 6 von 10   « Erste     456 78     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 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