Verteile Programmiereung- Wie kann man Komponenten an den Klient delegieren
-
Hallo zusammen,
Gibt es eine Möglichkei, um mit C ein Client Server architektur zu schreiben, welche Funktionen an die Clients delegiert?
Aso zB dass der Server eine Art "Objekte" erstellt, und diese dann an den Server senden?
In C gibts ja einfah Structs. Dann kann man mittels RPC ja Netzwerkmethoden schreiben. Nun aber, wie kann man nun auf dem Server eine Art "Obejek" instanzieren, mit den benötigten Funktionen und Variablen und diese dann einem Client schicken, damit dieser wie diese Struktur bei sich ausführt? Aso das zB ein Server ein Objekt(struct oder so...) Person erzeugt mit zB Variable name und Methode od. Funktoin aendereName(), dieses dem Client delegiert, und dieser diese Funktion in einer Endlosschleiffe bei sich ausführt? Geht das überhaupt irgendwie, das man eine Methode an den Client delegiert, und dieser einfach diese Methode ausführt? Einfach so, dass der Server eben dieses Objekt oder stuct oder so erzeugen kann, dem "nichtswissenden" Client schicken, und dieser soll einfach aufgrund dieses erhaltenen "Objektes" ausführen, was ihm gesagt wird... oder so.
Aso eben, komme aus java. Habe wirklich irgendwie noch meine Verständnisschwierigkeiten, wie ich so was ohne objekte und co. realisierne soll...
Wäre echt dankbar um jeden noch so kleinen Input.
Hoff id verständlich, was mein Probelm is. Und gibts da vielleicht ein gutes Tut oder so, welches diese Problem beschreibt?
Greats
Mikloman
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
In Java gibts einiges mehr dazu.
http://java.sun.com/javase/technologies/core/basic/rmi/index.jspMit C dürfte es einiges aufwendiger werden, aber wenn ich deinen Text lesen, hört sich das so an, als ob beides noch nichts für dich ist.
-
In C geht das so direkt nicht.
Du kannst natürlich eine Scriptsprache oder VM einbinden. Für die kann der Server dann Code erstellen und an den Client schicken. Der Client kann diesen Code dann an die Scriptsprache/VM übergeben damit diese ihn ausführt.
-
Man kann z.B. eine Scriptsprache benutzten. Zuerst schickt der Server die Daten mit denen gearbeitet wird. Dann generiert der Server ein Script, schickt ihn per Netzwerk an den Client und der Client führt das Script aus. Das Ergebnis wird dann wieder zurück an den Server geschickt.
Also z.B.:(ID) 1, (New Name) "Devent", (command) rename -> Client -> (return) "Ok"
Hat hustbaer ja schon vorgeschlagen, sorry, habe sein Beitrag nicht gelesen.
-
Vielleicht lässt du Server und Client als Windows-Anwendungen - mit WinApi - laufen. Dort gibt es viele Möglichkeiten zur Kommunikation zwischen unterschiedlichen Prozessen. Die Funktion SendMessage(...) ist das einfachste. Daneben gibt es weitere Methoden, die unter dem Stichwort IPC - Inter Process Communication - zu finden sind. Dazu müsste du aber ins Forum WinApi gehen. Den Einsatz von Scriptsprachen und/oder Dateien würde ich nicht wählen.
-
@berniebutt:
vielleicht solltest du aufmerksamer lesen.der OP will vollständige objekte (daten + CODE!) verschicken.
zeig mir mal wie du das mit SendMessage machst.mal ganz davon abgesehen dass SendMessage nur innerhalb einer window-station funktioniert (d.h. lokal auf einem PC, nix mit netzwerk etc.).
-
O.K., mit der Programmierung in Netzwerken kenne ich mich nicht aus. Aber dafür gibt es doch auch spezielle APIs. Oder man geht eben auf das Anstossen von Programmcodes und zugänglich gemachte Daten zurück. So schwer stelle ich mir das nicht vor.
Weil ich keine Ahnung davon habe, kann ich nicht mehr dazu sagen. Ich weiss jedoch, es gibt für alles eine brauchbare Lösung. :p
-
berniebutt schrieb:
O.K., mit der Programmierung in Netzwerken kenne ich mich nicht aus. Aber dafür gibt es doch auch spezielle APIs. Oder man geht eben auf das Anstossen von Programmcodes und zugänglich gemachte Daten zurück. So schwer stelle ich mir das nicht vor.
Weil ich keine Ahnung davon habe, kann ich nicht mehr dazu sagen. Ich weiss jedoch, es gibt für alles eine brauchbare Lösung. :p"Ich hab zwar keine Ahnung, aber so Schwer kann das nicht sein". Leute gibt's
Ja, es gibt eine fertige Lösung dafür, und die nennt sich Java-VM. Nur will er es in C machen du Held.
-
mikloman schrieb:
In C gibts ja einfah Structs. Dann kann man mittels RPC ja Netzwerkmethoden schreiben. Nun aber, wie kann man nun auf dem Server eine Art "Obejek" instanzieren, mit den benötigten Funktionen und Variablen und diese dann einem Client schicken, damit dieser wie diese Struktur bei sich ausführt?
CORBA
Mit fällt allerdings spontan nur ORBit ein, wenn es um einen ORB mit C Unterstützung geht. Bei C++ ist die Auswahl größer.