Hi mal eine allgemeine Frage.
Ich möchte einen WCF-Service erstellen der in einem bestimmten zeitlichen Intervall Daten aus einer Datenbank liest, auswertet und das Ergebniss für n Clients bereitstellt.
Die Bedingung ist also den Datenbanktraffic gering zu halten.
Momentan ist es sehr "unschön" gelöst in dem der WCF-Service als Singleton
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
ausgeführt wird. Die erste anfrage startet eine Void-Methode die in einer Endlosschleife die Daten alle x Sekunden aus der DB holt und in eine Klassenvariable stellt.
Die Clients rufen nun einen einfach eine Get-Methode auf welche als OperationContract "getarnt" ist. Dies bedeutet das ich 2 Zeitintervalle habe. Zum ersten den Intervall in dem ich die Daten aktualisiere (WCF-Seitig festgelegt) und den Intervall in dem ich die Daten hole (clientseitig festgelegt).
Jetzt endlich zu meiner Frage:
Ist es möglich von Singleton auf Per Session umzusteigen?
Momentan sehe ich da 2 (große) Probleme:
1. Wie verteile ich die Daten zwischen den Session? Mit InstanceContextSharing?
2. Wie starte ich die Methode die die Datenbankabrufe beinhaltet ohne an eine Session gebunden zu sein? Mit anderen Worten: Hört meine Datenaktuallisierung auf sobald die Session, die den Datenbankabruf gestartet hat, endet?