我试图理解
- CacheMetadata 和在我自己的缓存中缓存完整活动对象之间的区别(一些集合)
- 无论如何我可以提高基于 xaml 的工作流程的性能。
我们有类似...
公共类 BusinessRule
{
公共动态活动活动{获取;私人套装;}
公共业务规则(字符串规则SetAsXaml)
{
流流 = new 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);
}
}
}
我们有很多这样的业务规则。xamls 存储在数据库中,所有这些规则都被实例化一次并保存在一个集合中(在内存中)。这些在需要时使用 Execute() 方法调用(带有附加参数)。
现在我的问题......无论如何我可以做得WorkflowInvoker.Invoke()
更快吗?目前,它正在00:00:00.1214497
处理每个调用,CPU 利用率为完整进程的 25%(在这条线上)。还可能注意到我在 xaml 中没有做任何棘手的事情。
我在这里做错什么了吗?我需要缓存元数据吗?