私は理解しようとしています
- CacheMetadata と自分のキャッシュ (一部のコレクション) での完全なアクティビティ オブジェクトのキャッシュの違い
- とにかく、xaml ベースのワークフローのパフォーマンスを向上させることができますか。
次のようなものがあります...
パブリック クラス ビジネスルール
{
public DynamicActivity アクティビティ { get; プライベートセット; }
public BusinessRule(string ruleSetAsXaml)
{
ストリーム ストリーム = 新しい MemoryStream(ASCIIEncoding.Default.GetBytes(ruleSetAsXaml));
this.Activity = ActivityXamlServices.Load(stream) as DynamicActivity;
}
public void Execute(data objData)
{
Dictionary<string, object> inArgs = new Dictionary<string, object>();
inArgs.Add("data", objData);
if (this.Activity != null)
{
WorkflowInvoker invoker = new WorkflowInvoker(this.Activity);
outArgs = invoker.Invoke(inArgs);
}
}
}
そして、このような多くのビジネス ルールがあります。xaml はデータベースに格納され、これらすべてのルールは一度インスタンス化され、コレクション (メモリ内) に保持されます。これらは、必要に応じて (追加の引数を使用して) Execute() メソッドを使用して呼び出されます。
今私の質問...とにかく私はWorkflowInvoker.Invoke()
もっと速くすることができますか? 現在00:00:00.1214497
、完全なプロセスの 25% の CPU 使用率 (この行で) で各呼び出しを行っています。また、xaml でトリッキーなことは何もしていないことに注意してください。
私はここで何か悪いことをしていますか? メタデータをキャッシュする必要はありますか?