私はワークフローサービスとWPFの調査段階にあります。
ステートマシンWFサービスをIISでホストし、1つ以上のWPFクライアントがWFサービスと通信することは、これまでのところ妥当な選択のように思われます。
ただし、何日も読んで調査したものの、WPFアプリから状態間の転送を追跡するための最良の戦略が何であるかは私にはわかりません。
参加者を追跡するサンプルは多数ありますが、それらのほとんどは1つのプロセスシナリオに基づいています。
なので、以下のような構造を考えています。
- クライアント側のエンドポイントを登録するためにクライアントが呼び出すサーバー側のWCF操作
- 登録されているすべてのクライアント側エンドポイントを通過し、Track()メソッドでTrackingRecordを送信するカスタム追跡参加者。
このアプローチの利点は、ETWのような余分なレイヤーなしで状態をリアルタイムで更新できることです。もう1つの利点は、プレゼンテーション層からロジック(またはモデル層)を分離できることです。
上記の構造について誰かが意見を共有できますか?また、目標を達成するための提案を歓迎します。
[編集]上記の私の考えをより詳細かつ明確にするために、以下の手順が典型的な使用法です。
1)(WPFクライアント)には、TrackRecordを受信するためのWCFエンドポイントが含まれていて開きます。
2)(WFサービス)は、クライアント側のアドレスを内部ストアに登録するWCF操作(または受信メッセージを含む単純なWFインスタンス)を開きます。
3)(WFサービス)カスタム追跡参加者が作成および追加され、登録されたクライアントのエンドポイントにTrackingRecordが送信されます。
4)(クライアント)は上記のサービスに接続し、ステップ1で説明したクライアント側のエンドポイントを配布し、その結果、TrackingRecordsを受信します。
[編集2]
簡単に言えば、知りたいのですが
1)TrackingParticipantを介してWFサービス(IIS)+WPFまたは任意の種類のクライアントアプリでStateMachineの状態を追跡する最も効率的な方法。
2)私の提案を改善できるかどうか
その間、私はこれを実装し、これまでのところうまく機能しています。また、クライアント側にMvvM Lightフレームワークのメッセージング機能を追加して、受信したメッセージをモデルに簡単に伝達できるようにしました。