2011-06-29 8 views
1

私は、3層のWCFを持つフォームベースのアプリケーションをサービスレイヤーとして使用しています。私たちは、8〜10個のWCFサービス(Windowsサービスでホストされています)をさまざまな目的で使用しています。管理者は、ユーザーが操作を実行できないようにする必要があり、ロックを解除できる必要があります。基本的には、サービスやDBの更新や更新を行うことを意図しています。 1つのオプションは、サービスを停止することです。しかし、サービスを停止できないシナリオもありますが、要求を処理することはできません。wcfサービスへのユーザー要求を停止する

私は知っておきたいのは、WCFではサービスをブロックしてリクエストを受け取ることができるが、実行を続けている方法やAPIがあることです。

私はwcfチャネルレベルで何かを見て、すべてのサービスやメソッドを変更するのではなく、管理UIからAPIのように制御できるサービスへのリクエストを停止します。それがより明確になることを願っています。 "すべての要求を" ブロッキング

おかげで、 マニ

答えて

0

は正確に実行されていません。あなたのアプリサービスが照会するが変更はしない、何らかの読み取り専用モードを意味するならば、自分でそれをコーディングする必要があります。あなたはかもしれない WCF拡張を介して何か気になることをすることができるが、私は個人的に気にしないだろう - 私はすべての "やっている"メソッドの開始時に "管理フラグが設定されている"それがあなたの意図ならば、潜在的にすべての方法。

発信者が正常に処理できる(またはできない)という既知の障害/例外が返されます。メソッドの数が自明でない場合は、WCF拡張ポイントを確認してください。私はmany extension pointsがありますが、 "操作の動作"を考えています。

+0

私は読み取り専用モードを意味しません。私はサービスを実行したいが、管理者がサービスをロックした後、それ以上のクライアントがサービスにアクセスしようとすると、エラーがスローされるか、サービスがロックされた状態であることが示される。希望は明らかです。 –

+0

@Mani - おそらく拡張ポイント。特にインボーカです。しかし何も組み込まれていません。 –

1

一時停止/再開メッセージを送信できる管理エンドポイントがサービスに公開されるようにすることができます。

また、AuthorizationServiceなどの集中サービスを設定し、許可されていることを確認するためにWindowsサービスがすべての呼び出しに対してAuthorizationServiceを呼び出すようにすることもできます。その後、そのサービスは、ユーザーの資格情報、時刻、管理者の気分、または呼び出しを許可するかどうかを望むものに基づいて決定できます。私はこの第2のシナリオがあなたの特別な場合に適用可能であるかどうかはわかりません。

+0

どちらのオプションでも、わかっているように、各サービスのすべての操作方法を変更してステータスをチェックし、それに応じて処理を進めるべきです。私たちは約10以上のサービスと100種類のメソッドを持っているので、私は現時点でそれを行うことはできません。あなたの最初の選択肢は私に考えさせるようですが、どのようにしてこのエンドポイントを通じてサービスの他のエンドポイントを制御することができないのか分かりません。 –

+0

両方の方法でメッセージ代行受信を使用して、操作を許可または禁止できます。詳細については、http://msdn.microsoft.com/en-us/library/ms751495.aspxを参照してください。 –

関連する問題