2017-12-20 10 views
1

Windows Workflow Foundation 4.5を使用して、Web APIを介してワークフローをトリガーします。 MSがAppFabricサポートを終了するようになりましたので、私のホスティングオプションは何ですか? Windows Workflow Foundationを使用する必要がありますか、サードパーティのソリューションを検討する必要がありますか?Windows Workflow FoundationオンプレミスホスティングとWeb Api

これはオンプレミスであり、私は青空を使用する能力がありません。私はいくつかのワークフローを行ってきましたが、WWFは使用するのが難しくないようですが、ホストする方法が明確ではありません。 AppFabricなしでWeb APIプロジェクトの中でホストすることはできますか?

私の主な関心事は、IISアプリケーションプールがWorkflowApplicationを使用してリサイクルされるか、サーバーがクラッシュするとワークフローを再開できることです。私はWCFを使用していません.Web API内でWorkflowApplicationを使用する予定です。

AppFabricが担当していたカスタム機能を実装する上で、正しい方向で私を指摘できますか?

投稿者MS: IISをAppFabricとともに使用することは、ワークフローの優先ホストです。 AppFabricを使用するワークフローのホストアプリケーションは、Windows Activation Serviceであり、IIS単独でHTTPに依存することを排除します。

IIS 7.0ではさまざまな理由によりアプリケーションプールが定期的にリサイクルされます。アプリケーションプールがリサイクルされると、IISは古いプールへのメッセージの受け入れを停止し、新しい要求を受け入れるために新しいアプリケーションプールをインスタンス化します。応答を送信した後もワークフローが機能し続ける場合、IIS 7.0は実行中の作業を認識せず、ホスティングアプリケーションプールをリサイクルする可能性があります。この場合、ワークフローは中止され、追跡サービスは空のReasonフィールドを含む1004 - WorkflowInstanceAbortedメッセージを記録します。

永続性が使用される場合、ホストは最後の永続ポイントから中止されたインスタンスを明示的に再起動する必要があります。

AppFabricを使用すると、ワークフロー管理サービスは、永続性が使用されている場合、最終的に成功した永続ポイントからワークフローを最終的に再開します。永続性が使用されず、ワークフローが要求/応答パターン外の操作を実行する場合、ワークフローが異常終了するとデータが失われます。

+0

あなたは必ずしも限り、あなたはワークフローの状態のための独自の永続化ソリューションを実装すると、AppFabricのを使用する必要はありません。ここで

は、私はそれがあなたのデザインで助けるかのアイデアを与えることを願っています図ですSqlServerのようなデータベースに格納します。 – zcui93

+0

それは私がやろうとしていることですが、どこから始めるのかはわかりません。サンプルはありますか? – Fab

答えて

0

1つのホスティング戦略は、Web APIメソッドでメッセージをキュー(MSMQやRabbit MQなど)に配置し、実際にワークフローインスタンスをホストするためのバックエンドWindowsサービスを持つことです。バックエンドサービスは、キューを連続的に読み取り、必要な正しいワークフローをスピンアップします。

この方法では、ワークフローを終了させる可能性のあるIISアプリケーションプールリサイクルイベントを実行しません。

ワークフローが終了するまでWeb APIメソッドが待機する必要がある場合は、「相関メッセージ」がキューに到着して操作が完了したことを通知するまで待つことができます。または、WFインスタンスの結果をDBテーブルに格納することもできます。

実際にはApp Fabricを使用せず、単に柔軟性を高めるために独自のホスティングサービスをローリングすることをおすすめします。加えて、あなたの望む動作を実装するのが比較的簡単です。

A crude diagram... but could help. :)

+0

ありがとうございます。これは、ワークフローを実装するのが複雑で、圧倒的で非現実的です。私は、私がプロジェクトに落として使うことができるはずのものを実装するのに多くの時間がありません。この時点では、すべてのロジックをコーディングするだけで、Windowsワークフローを使用するのではなく、サードパーティのソリューションをテストできるようになります。 – Fab

関連する問題