2010-07-26 2 views
0

J'ai 2 contrats hébergés dans deux servlets dont j'ai besoin d'avoir un objet singleton dans le premier contrat alors quand l'autre servicehost essaie de créer un objet de cette classe, il récupère simplement le même objet le premier servicehost,Accéder à ServiceHost dans WCF à partir d'un autre Servicehost C#

ce qui pourrait signifier que je dois trouver loin pour accéder au servicehost et obtenir l'objet de lui au lieu d'en créer un nouveau .. une idée?

merci à l'avance

+0

Utiliser un cadre d'injection Depedency comme ninject ou StructureMap pour définir une implémentation basée singleton pour une interface décrivant votre objet singleton –

+0

je ne pense pas que mon problème est de savoir comment mettre en œuvre singleton, je l'ai déjà fait ça, la chose est de un point de terminaison (servicehost) son processus totalement différent qui signifie que lorsque l'autre point de terminaison essaye de créer un nouvel objet, il trouvera toujours aucun objet car le premier objet est créé dans un processus différent (servicehost) c'est pourquoi je pense accéder à un hôte de service depuis un autre hôte de service – Stacker

+0

Si vous avez une interface 'IMySingleton' et utilisez un conteneur DI et que vous le définissez comme singleton, les deux instances de votre hôte de service peuvent simplement demander à une classe implémentant cette interface le conteneur DI, et le conteneur DI garantirait que les deux obtiennent la même instance (l'instance singleton) –

Répondre

0

donc, je pense que vous pouvez faire l'instance de la classe vous, passez alors ce service par exemple les deux hôtes de service. Je n'ai pas testé cela en profondeur cependant.

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] 
public class Calc: ICalc 
{ 
} 

var calc = new Calc(); 
var h1 = new ServiceHost(calc, baseAddress1); 
var h2 = new ServiceHost(calc, baseAddress2); 
+0

merci fusée pour votre réponse, mais vous avez répondu à une question de 1 an je n'ai même plus le code pour vous assurer que votre réponse travail, donc je ne peux pas dire si cela fonctionnerait ou non. – Stacker

+0

oh, je n'ai pas vu la date, ne vous embêtez pas. – rocketsarefast

Questions connexes