Cross-Platform Client-/Server-Architektur
-
Hallo liebe Forengemeinde,
da ich neu hier bin, erstmal ein paar Worte zu mir:
Mein Name ist Sven, ich bin 23 Jahre alt und komme aus dem schönen Aachen. Nach meiner Ausbildung zum Elektroniker f. Automatisierungstechnik befinde ich mich jetzt mitten in meinem Elektrotechnik-Studium.
Ich befasse mich jetzt schon etwas länger mit dem Programmieren (SPS, Assembler, C++, C#, VB.Net) und mein aktuelles Projekt wollte ich eigentlich in C# schreiben...daraus wird jedoch wohl nichts. Aber der Reihe nach.
Es geht, im großen und ganzen, um eine SCADA-Anwendung (für alle nicht-Automatisierer: Prozessleitsystem), welche plattformunabhängig sein soll. Zumindest der Kern der Sache.
Ziel ist es, die Software auf Windows, Linux, MacOSX und iPhone OS lauffähig zu bekommen. Deswegen bin ich jetzt auch von C# weg, da zwar mit Mono einiges möglich ist, aber eben nicht alles.Mein Hauptproblem ist folgendes: Alle Objekte des Steuerungssystems werden in Software nachgebildet. Ich möchte einen Server entwickeln, welcher sich mit dem Steuerungssystem verbindet, eine Reihe von Objekten erzeugt, welche die Teile des Systems (z.b. Motoren, Frequenzumrichter, etc.) nachbilden und die entsprechenden Werte aktualisiert. Das ist auch noch das kleinere Problem.
Nun soll dieser Server die gesamte Sammlung von Objekten (Unter C# würde ich eine Hashtable dafür nutzen, habe aber noch keine Ahnung, wie ich das unter C++ gut lösen kann) dem oder den Clients zur Verfügung stellen.
Es soll möglich sein, dass der Server bei Änderung einer Variablen im Steuerungssystem dies den Clients mitteilt, woraufhin diese dann die neuen Werte (im richtigen Objekt) ändern können oder, wenn das einfacher lösbar ist, der Server direkt die entsprechenden Objekte anpasst.
Ferner soll es möglich sein, dass der Client ein beliebiges Objekt auf dem Server ändert, woraufhin dieser die entsprechende Änderung in das Steuerungssystem schreib (letzteres ist auch kein Problem).
Ich hoffe, ihr könnt mir folgen und mir einige Tipps geben, wie ich (möglichst komfortabel) eine plattformunabhängige Kommunikation erstellen kann, welche es ermöglicht, beliebige Objekte über das Netzwerk hin und herzuschicken.
Danke schonmal im Voraus.
-
Majestic1987 schrieb:
Nun soll dieser Server die gesamte Sammlung von Objekten (Unter C# würde ich eine Hashtable dafür nutzen, habe aber noch keine Ahnung, wie ich das unter C++ gut lösen kann)
Vielleicht mit einer Hashtable

Gibts zwar in der Standardbibliothek nicht, aber es gibt diverse Implementierungen, z.B. von boost: http://www.boost.org/doc/libs/1_43_0/doc/html/unordered.htmlIch hoffe, ihr könnt mir folgen und mir einige Tipps geben, wie ich (möglichst komfortabel) eine plattformunabhängige Kommunikation erstellen kann, welche es ermöglicht, beliebige Objekte über das Netzwerk hin und herzuschicken.
Das sind eigentlich die üblichen Probleme einer Client-Server Architektur. Im Grunde brauchts dafür ganz allgemein ein entsprechendes Protokoll, an das sich Client und Server halten, und das festlegt wie die Daten verschickt werden. Das umwandeln von Objekten in ein bestimmtes Protokoll und die Rückumwandlung auf der anderen Seite wird allgemein Serialisierung/Deserialisierung genannt - vielleicht findest du unter diesen Begriffen was im netz was dich anspricht

-
Oder du schaust dir mal XML-RPC an. Dies ist nimmt sich zur Grundlage das ganze Plattform unabhängig und Programmiersprachen unabhängig zu halten. Findest einiges dazu im Internet. Hab auch schon irgendwo schön Bibliotheken gefunden.
Mfg marc-o