Geeignete Form der Datenflussübertragung

krambambuli

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen!

Ich hätte mal eine allgemeine Frage zum Thema Datenübertragung:
Ich habe ein System mit einem Client-Server Modell. Eine vielzahl von Klienten (IPCs mit OPC-Server, Daten werden mit C# Programm per TCP/IP an Server gesendet) sammelt dabei im Sekundentakt Daten ein. Nachdem der Server (PC, C# Programm empfängt Daten via TCP/IP von Klienten) gestartet ist sagt er allen Klienten einmalig welche Daten er von den Klienten gerne hätte. Danach wartet der Server darauf, minütlich von jedem Klienten seine Daten zu bekommen und speichert diese dann ab. Sollte der Server irgendwann gerne andere Daten haben wollen, teilt er dies den Klienten wieder einmalig mit und wartet dann wie zuvor auf die Daten.

Meiner Meinung nach gibt es nun zwei Möglichkeiten dies zu realisieren:

1. Nachdem der Server den Klienten gesagt hat was er will, wartet er einfach nur auf eingehende Daten. D.h., jeder Klient nimmt von sich aus die Verbindung auf und sendet ihm minütlich Daten, dabei kann dies ein ziemliches Durcheinander geben, da mehrere Klienten gleichzeitig senden könnten.

2. Nachdem der Server den Klienten gesagt hat was er will, stellt er von sich aus jede Minuten eine Verbindung zu dem jeweiligen Klienten her um dann die Daten von diesem zu empfangen. Hat er die Daten verbindet er sich zum nächsten, usw.

Mein Frage ist folgende:

Welches Verfahren macht mehr Sinn? Ich bin mir da unsicher, ich habe das erste bereits mit TCP/IP realisiert und es funktioniert gut mit bisher 3 Klienten. Die Frage ist nur ob es Sinnvoll ist? Ist die andere Lösung vielleicht sicherer und besser bei steigender Anzahl von Klienten?
 
Ich glaube ich würde die Rollen der Teilnehmer überdenken. Was bei dir die Klienten sind, stellen für mich in dem Sinne die Server dar, da sie Serverdienste (Berietstellung von Variablenwerten zur Abholung) zur Verfügung stellen. Dein Server übernimmt für mich die Client-Rolle, denn er sammelt aktiv die Daten von den Geräten ein die Serverdienste zur Verfügung stellen.

Diese Definition findet man auch bei üblichen Leitsystemen wieder. Das Leitsystem ist der Client, welcher von den Steuerungen (Server) die Daten abholt.
Ein Durcheinander gibt es nur wenn du es durcheinander programmierst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was die Bezeichnung der Komponenten angeht, sind diese tatsächlich falsch gewählt. Allerdings stellt der "Server" seine Daten ja wiederum einer Visualisierung und weiteren Anwendungen zur Verfügung, dementsprechend ist er an dieser Stelle wieder ein "richtiger" Server. Aber das nur zu den Bezeichnungen :)
 
Hallo,
ich halte es für sinnvoller wenn du dem Sammler die Kontrolle über die Kommunikation überläßt. Damit würdest du n.m.M. gerade bei vielen Teilenhmern eine Netzwerk-Überlastung verhindern und die Performance hoch halten können.
Der Sammler kennt ja alle seine Daten-Lieferanten, fragt die der Reihe nach ab bzw. übergibt ihnen die relevanten Daten.
Das wäre im Grunde die Funktionalität, die auch ein Bus hat ... (z.B. Profibus - mal von der Physik abgesehen)

Gruß
Larry
 
Zurück
Oben