質問

Windowsワークフローの基盤の内部を把握しようとしています。したがって、ソフトウェアコンポーネントがいくつかあり、それらを条件ベースのシーケンシャルワークフローまたはステートマシンワークフローのワークフローの形で組み合わせます。今、IoC + Dependency Injection(UnityまたはSpring.net経由)にも同じことが当てはまると考えています(ここでは間違っているかもしれません)。いつ何を使用しますか?私も考えていますか?

役に立ちましたか?

解決

質問を理解したかどうかはわかりませんが、とにかく試してみます。

WFはIOCコンテナを使用しません。 ServiceLocatorパターンを使用して、ワークフローランタイム、サービスロケーター、およびワークフローアクティビティに依存関係を追加し、ワークフローランタイムからこれらのサービスを取得します。

ServiceLocatorとIOCパターンは類似しており、依存関係を分離するという目的が同じです。ただし、依存関係を引き出すためにServiceLocatorが使用されている間に、依存関係をプッシュするIOCコンテナでは、アプローチは異なります。

これがあなたの質問に答えることを願っています。そうでない場合は、元の質問を書き直します。

他のヒント

私は、IOCコンテナーによってワークフローから提供およびサービスされるコンポーネントの使用方法にも取り組んでいました。他の答えが示すように、ワークフローインスタンスは、依存関係を挿入するのではなく、サービスロケーターを使用してランタイムからサービスをプルすることを望んでいます。

ギャップを埋める簡単な方法は、WFランタイムのセットアップ時にIOCコンテナーから依存関係を取り出し、AddServiceを使用してそれらをランタイムに配置することです。ワークフローはOnActivityExecutionContextLoadをオーバーライドし、サービスプロバイダーのGetServiceメソッドを使用して、ランタイムからそれらを戻し、ワークフローの[NonSerialized]パブリックプロパティに入れます。その後、コードアクティビティなどからサービスにアクセスできます。

ワークフローインスタンスがアクティブ化されたときに依存関係を注入するランタイムサービスをリグできる場合もあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top