1

WCF WorkflowService を作成していますが、クライアントはサービスに対して非同期呼び出しを行っています。ワークフローは非常に長時間実行されます。クライアントが接続を切断すると (つまり、要求が行われたアプリケーションを閉じます)、ワークフローは続行され、停止しません。これはどのように作動しますか?クライアントが切断されると、サービス インスタンスは破棄されず、ワークフローは停止するはずですか?

デフォルトで「ファイアアンドフォーゲット」、つまり一方向として動作するのはなぜですか?

編集:クライアントが切断されると、サービスインスタンスが破棄され、ワー​​クフローが中止されると思いました

4

1 に答える 1

2

ワークフロー エンジンは、長時間実行される非同期プロセスをモデル化します。このようなプロセスは、数秒、数時間、数週間、さらには数年に及ぶ可能性があり、1 人または多数の参加者が関与する場合があります。したがって、接続を開いたままにしておくことを要求するのは不合理であり、望ましくありません。

Windows ワークフロー サービスは、その状態を何らかのデータ ストア (通常はデータベース) に保存します。そのため、そのワークフローで指定された時間何も起こらない場合は、データベースに保存してメモリからアンロードできます。将来、誰かがそのワークフロー インスタンスに関連する WCF 操作の 1 つを呼び出すと、データベースから復元され、常にメモリに読み込まれているかのように実行が続行されます。これにより、非常に多くのワークフロー インスタンスが任意の時点で存在し、それらのごく一部だけが実際にコンピューター リソースを使用することができます。

永続性も、ワークフロー サービスの重要な機能です。長い間続いているワークフローがある場合、そのすべての状態とデータが失われることは望ましくありません。また、可能であれば、ワークフローを最初からやり直す必要があります。これが、ワークフローの状態情報がネットワーク接続のような壊れやすいものに依存しない理由です。

于 2012-07-01T13:28:37.980 に答える