2011-03-20 8 views
1

私は最初のWCFサービスを作成しています。私は自分のアーキテクチャについて助けが必要です。 AppPoolは7つのサービスで構成されています。 (ConfigService、SwitchService、CameraService、TelescopeServiceなど)。 ConfigServiceは、サービスの使用方法を定義するxElementを返します。ここでは例がある...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> 

XMLは、サーバーが2つの構成の設定で、どのサービスおよびドライバがthoesサービス用に設定されていることを消費しapplicaiton伝えます。これはまた、一度に2つのアプリケーションを接続できることを意味し、それぞれ別個の構成を使用します。 3番目のアプリケーションが接続しようとしている場合は、拒否するか、設定がまだ利用できないことを伝える必要があります。

アプリケーションを1つしか使用できないように、1つ以上のサービスを構成する1つの構成を使用できるように、サービスをどのように管理できますか?

答えて

1

私はあなたのサービスが消費しているアプリケーションを「登録」し、それをトークンに戻さなければならないと思います。後続の呼び出しは、トークンが一致する場合にのみ機能します。消費するサービスのタイムアウトを防ぐために、何らかの種類のタイムアウトを設定する必要があります。

+0

これは実現可能なようです...私はそれにトークンを持つ利用可能な単一のconfigSetを送り返すことができました。どこにトークンをチェックするのがよいでしょうか。各サービスのコンストラクタがこれを保持できますか? –

+0

WCFサービスがサービスコールごとに新しいバージョンのクラスをインスタンス化すると仮定しなければならないかどうかはわかりません。私はそれが一般的にhttpとnettcpエンドポイントの場合だと思います。ただし、asp.netセッションサポートまたはエキゾチックなエンドポイントタイプを有効にした場合はそうではありません。 –

関連する問題