2011-06-05 20 views
2

ヘルプデスクがユーザーを作成し、私たちの環境で使用されているアプリケーションのいくつかをセットアップできるようにWebインターフェイスを作成すると、WebインターフェイスはASP.NETで記述されますが、バックエンドを実装する最善の方法です。ASP.NETデザインの質問 - Webサービス

私はアカウントの作成を行うためにウェブサービスを利用する予定でした。私の主な関心事は、セキュリティと懸念の分離であるため、私はアプリドメインが十分であるとは思わなかった。

アイデアは、Webサービスリクエストを通じて情報を取得し、実際の作業を行うために特権アカウントの下にスレッドを生成することです。他のシステムがあるので、複数のWebサービスを使用することになります。

誰でもこれに関する問題を見ることができますか?

+1

ブライアン私はこれが移動するための方法かもしれないと思っていたコメントに基づいて:ASP.NETのWeb UI <-> WCFサービス<->キュー<->サービス(プロセス・タスク)非常に良い提案のように聞こえる – ServerMonkey

答えて

1

あなたは合理的な解決策を提案しますが、私は代替策を考えることができます。スレッドを扱うことは、ASP.NETアプリケーションで苦労する可能性があります。不可能ではないが痛み。タスクを独立したアイデンティティーで実行できるようにスレッドを作成していますか、タスクが長時間実行される可能性があるか、またはその両方ですか?もう一つ考慮すべき点は、ユーザーを認証する方法です。 ASP.NETで別のユーザーアカウントを偽装する方法を知る必要があります。

負荷やその他の要因によっては、キューをアプリケーション(データベース内、またはMSMQ、Rhinoキューなどを使用する)に導入する方がよい場合があります。リクエストが有効になったとき。 OKであれば、それをキューにダンプし、相関IDをクライアントに返します。クライアントは、このIDを使用してタスクのステータスを確認できます。

キューをデータベースに格納することも、特定のキューイングAPI /システムを使用することもできます。スケジュールされたジョブまたはWindowsサービスとして実行される個別のアプリケーションを作成します。このアプリケーションは、Webサービスを呼び出すクライアントとは別のIDで実行され、他のスレッドで行う作業を行います。キューに入れられた作業が完了すると、データベースはステータスで更新されます。

このようにすることで、ASP.NETアプリケーションに特別なコードを作成することを避けることができます。タスクが失敗した場合、設定しているサードパーティのアプリケーションがオフラインであるとしたら、操作を再試行することができます。私はこの方法も監視しやすくなっています。アプリケーションがオフラインの場合、アプリケーションをあまりにも難なく受け入れ続けることができます。

+0

おかげでブライアンを、。スレッドは偽装用で、長時間実行されるタスク用です。キューを使用するのは非常に簡単です。 – ServerMonkey