2011-03-20 5 views
1

J'écris mon premier service WCF et j'ai besoin d'aide pour mon architecture. L'AppPool est composé de 7 services. (ConfigService, SwitchService, CameraService, TelescopeService, etc ...). Le ConfigService renvoie un xElement qui définit comment les services doivent être utilisés. Voici l'exemple ...Configuration WCF

<configuration> 
    <configSet name="Configuration 1" Available="True"> 
    <serviceSet name="SwitchService"> 
     <Driver DriverId="ASCOM.Simulator.NWaySwitchDriver" ui="Standard"/> 
    </serviceSet> 
    <serviceSet name="CameraService"> 
     <Driver DriverId="ASCOM.Simulator.Camera" ui="Standard"/> 
    </serviceSet> 
    </configSet> 
    <configSet name="Configuration 2" Available="True"> 
    <serviceSet name="SwitchService"> 
     <Driver DriverId="ASCOM.Simulator.NWaySwitchDriver" ui="Standard"/> 
    </serviceSet> 
    </configSet> 
</configuration> 

Le xml raconte l'applicaiton consommait que le serveur est configuré pour 2 configurations et les services et les pilotes sont configurés pour thoes services. Cela signifie également que seulement 2 applicaitons peuvent se connecter à la fois, chacun utilisant une configuration séparée. Si une troisième application tente de se connecter, elle doit être refusée ou informée que les configurations ne sont pas encore disponibles.

Comment puis-je gérer les services afin qu'une seule application consommatrice puisse utiliser une configuration composée d'un ou plusieurs services?

Répondre

1

Je pense que vous allez devoir faire en sorte que votre service "enregistre" l'application consommatrice et lui renvoie un jeton. Les appels suivants ne devraient fonctionner que si le jeton correspond. Vous devrez configurer une sorte de délai d'attente pour se prémunir contre le délai d'attente du service consommateur.

+0

cela semble faisable ... Je pourrais renvoyer un seul configSet disponible avec le jeton. Où serait un bon endroit pour vérifier le jeton. Le constructeur de chaque service pourrait-il tenir cela? –

+0

Je ne sais pas si vous êtes supposé supposer qu'un service WCF instancie une nouvelle version de la classe pour chaque appel de service. Je pense que c'est généralement le cas pour les points d'extrémité http et nettcp. Cependant, cela peut ne pas être le cas si vous activez le support de session asp.net ou les types de terminaux exotiques. –