| 

.NET C# Java Javascript Exception

4
Hallo,

ich hoste einen WCF Service über eine Windows Dienst. Das Dienstobjekt darf dabei nur einmal angelegt werden.
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]

Damit jetzt ein Client den Dienst benutzen kann, müsste ich beim Start eine Initialisierung mitgeben.
So in etwa:
serviceHost = new ServiceHost(typeof(MyRequest));
serviceHost.Open();
//Proxy gibt es so nicht
(serviceHost.Proxy as MyRequest).Init(configuration); //Aufruf der Init-Methode ...

Wie kann ich sowas machen?

Gruß
News:
10.10.2011
PinBack 687 1 8
1 Antwort
3
Hallo,

warum brauchst du den ServiceHost im Client? Der gehört zum Server. Siehe WCF Tutorial - Basic Interprocess Communication.

Außerdem: warum willst du unbedingt einen Singleton-Service haben? Das ist i.d.R. nicht notwendig.

mfG Gü
10.10.2011
gfoidl 9,4k 3 5
Der ServiceHost ist nicht im Client sondern in einem Windows Dienst. Ein Singleton ist leider nötig, da ich auf eine externe Bibliothek zugreifen muss die etwas zickig reagiert.
PinBack 10.10.2011
1
OK, dann hab ich den Text anders verstanden: So gib nicht typeof(MyRequest) an, sondern new MyRequest(), also die Instanz und nicht den Typ. Schau dir dabei die Konstruktorüberladungen vom ServiceHost an.

Die externe Bibliothek scheint somit nicht threadsicher zu sein. Kannst du nicht für jeden Zugriff eine Instanz dieser Bibliothek erstellen? Dann wäre es wieder threadsicher und auf Singleton kann verzichtet werden.
gfoidl 10.10.2011
Das war der richtige Hinweis. Man muss dem ServiceHost nur eine Instanz mitgeben die ich dann vorher initialisieren kann. Danke
PinBack 11.10.2011

Stelle deine .net-Frage jetzt!