Hallo,
beschäftige mich jetzt einige Zeit mit WCF und versuche einen bestimmten Aufbau umzusetzen b.z.w. zu verstehen. Bin aber noch nicht dahinter gekommen, wie das Binding funktionieren soll. Vielleicht kann mir jemand beim klären helfen.
Aufbau:
Auf einer bekannten Maschine läuft ein Werbserver der anfragende Clients mit den IExplorer Seiten versorgt. Diese Seiten sind Silverlight XAML Seiten, die UserControls enthalten. Diese UserControls fragen Daten über den Webserver von nachgelagerten Datenquellen (z.B.: via OPCServer aus SPS) an und werden auch bei Datenänderung benachrichtigt. Das Ganze soll mittels http ablaufen und über Port 80 stattfinden, damit keine Firewall blockt.
Das Ziel:
Die Server Maschine ist also speziell eingerichtet und besitzt auch alle Rechte. Von der Außenwelt kann sich jeder Client ohne Rechte und zusätzliche Installation verbinden und die Seiten mit online Daten anzeigen.
Was ich bis jetzt gefunden habe:
Zuerst das ABC:
- A: http://localhost/test , also http Protokoll und Port 80 (default,
wenn keine Angabe) wegen FireWall, die ist ja bei 80 überall offen.
- B: Hier scheiden sich schon die Geister. Es gibt (u.a.):
> WCF BasicHttpBinding (nur Verbindung und keine Rückmeldung)
> wsDualHttpBinding (Verbindung mit einmaliger Rückmeldung)
> PollingDuplexHttpBinding (Verbindung mit einmaliger Rückmeldung
und gepollter Client anfrage)
Das wsDualHttpBinding würde ja alles erfüllen, wenn nicht bei
Datenänderung ein CallBack nötig wäre und die UserControls
benachrichtigt werden müssten. Da der Client sich aber über http
verbindet, hat dieser keinen Endpunkt. Also wie soll man das
UserControl erreichen? Polling kann es ja eigentlich nicht sein. Wenn
ich mir vorstelle das 100 UserControls auf der Seite sind und 20
Clients beim Server anfragen dürfte die Leitung beim Polling dicht sein!
- C: Als Contract kann eigentlich nur CallbackContract in frage kommen,
damit ein UpDate stattfinden kann.
Liege ich falsch mit meinen Überlegungen, oder gibt es noch einen anderen Weg? Es gibt eine Applikation die behauptet wie oben beschrieben zu funktionieren, aber wie soll das gehen?
Wäre dankbar für eine Hilfe, Danke.
beschäftige mich jetzt einige Zeit mit WCF und versuche einen bestimmten Aufbau umzusetzen b.z.w. zu verstehen. Bin aber noch nicht dahinter gekommen, wie das Binding funktionieren soll. Vielleicht kann mir jemand beim klären helfen.
Aufbau:
Auf einer bekannten Maschine läuft ein Werbserver der anfragende Clients mit den IExplorer Seiten versorgt. Diese Seiten sind Silverlight XAML Seiten, die UserControls enthalten. Diese UserControls fragen Daten über den Webserver von nachgelagerten Datenquellen (z.B.: via OPCServer aus SPS) an und werden auch bei Datenänderung benachrichtigt. Das Ganze soll mittels http ablaufen und über Port 80 stattfinden, damit keine Firewall blockt.
Das Ziel:
Die Server Maschine ist also speziell eingerichtet und besitzt auch alle Rechte. Von der Außenwelt kann sich jeder Client ohne Rechte und zusätzliche Installation verbinden und die Seiten mit online Daten anzeigen.
Was ich bis jetzt gefunden habe:
Zuerst das ABC:
- A: http://localhost/test , also http Protokoll und Port 80 (default,
wenn keine Angabe) wegen FireWall, die ist ja bei 80 überall offen.
- B: Hier scheiden sich schon die Geister. Es gibt (u.a.):
> WCF BasicHttpBinding (nur Verbindung und keine Rückmeldung)
> wsDualHttpBinding (Verbindung mit einmaliger Rückmeldung)
> PollingDuplexHttpBinding (Verbindung mit einmaliger Rückmeldung
und gepollter Client anfrage)
Das wsDualHttpBinding würde ja alles erfüllen, wenn nicht bei
Datenänderung ein CallBack nötig wäre und die UserControls
benachrichtigt werden müssten. Da der Client sich aber über http
verbindet, hat dieser keinen Endpunkt. Also wie soll man das
UserControl erreichen? Polling kann es ja eigentlich nicht sein. Wenn
ich mir vorstelle das 100 UserControls auf der Seite sind und 20
Clients beim Server anfragen dürfte die Leitung beim Polling dicht sein!
- C: Als Contract kann eigentlich nur CallbackContract in frage kommen,
damit ein UpDate stattfinden kann.
Liege ich falsch mit meinen Überlegungen, oder gibt es noch einen anderen Weg? Es gibt eine Applikation die behauptet wie oben beschrieben zu funktionieren, aber wie soll das gehen?
Wäre dankbar für eine Hilfe, Danke.
Comment