2009-05-14 7 views
1

Webサービス(WCF/ASMX/etc)呼び出しに結果が返ってから何らかの処理を行う方法はありますか?注意:私は非同期呼び出しを探していません、余分な処理が行われる前に、クライアントが結果をすぐに返す必要があるためです。Webサービスでアフターコールの処理を行うにはどうすればいいですか?

主な制約は、私が知る限り、サーバー上でコードを実行する唯一の方法は、ASPページまたはWebサービス経由であることです。

バックグラウンドスレッドを生成することでこれを実行できますか?

答えて

1

あなたはクライアントが知らないか、成功をコントロールする副作用をしたいですか?たとえ即時同期応答を返しても、です。結果が観察可能であり、クライアントに関心がある場合は、クライアントとオペレーターが後で成功したかどうかを判断するための方法が必要です。

これは、Webサービスをホストする方法(通信とアクティベーションレイヤを提供するWCFから直交している)に依存します。通常のWebサービスホスティングでは、WSコール以外のものを処理することはできません。ほとんどの場合、自分自身を撮影してすべてのサーバーリソースを摂らないようにします。

  • thread poolに別のタスクを入力できますが、サーバーの負荷が過剰であると警告なしで終了することがあります。最近、運用サービスでこれに頼らざるを得ませんでした。幸いなことに、サーバーホストに高負荷が発生しません。私たちはこのソリューションの信頼性についていくらか緊張しています。
  • 私はWindows Activation Servicesで作業していませんが、別のスレッドで追加の作業を開始する方法が必要です。
  • いつでも独自のワーカープロセスを実装できます。 Windowsサービスとして、必要に応じて作業を送信します。これは非常に難しいことではありませんが、信頼性とスケーラビリティを実現するには少しの作業が必要です。好きなものではなく、シナリオの種類はWASが扱うことを意図しています。

他のスレッドを作成するのは簡単ですが、IISが自由に行うことを許可する必要はありません。特に、マルチアプリケーションWebホテルで実行している場合は特にそうではありません。

1

あなたのWebサービスは、おそらくWindowsサーバー上でホストされるでしょうか? Windowsのワークフロー

  • が、その後、エントリに基づいて何かを別のアプリ/プロセスによってスキャンされますデータベーステーブルへのエントリは、(例えば、電子メールを送信します書き込み

    • 打ち上げ:あなたは、物事の任意の数を行うことができますなど)
    • 私はあなたのオプションは、実際にはかなり無限にあると思いますコンソールアプリケーション
    • コール同じ上の別のサービスまたは別のサーバー

    キックオフ。しかし、彼らはWebサービス自体の一部ではありません。をオフにしてから、 Webサービスコールが終了します。 ASMXとWCFのどちらにも、実際には何もありません。要求を送信してから実行を続けることができます。サービスメソッドは、応答が完了したらそれを送信します。

    マーク

  • +0

    最後の1つは私には何も返さない非同期サービスを呼び出します。 – BCS

    関連する問題