2011-03-14 39 views
1

我有一个业务流程将调用静态类中的静态方法。我刚发现,如果你需要很多次运行一个Linq查询,那么把它变成一个编译查询是一个好主意。而且我的编排会产生很​​多次。biztalk使用的静态方法编译查询

但我不知道我会赢得任何东西,使其成为一个编译查询。

每个编排都必须编译查询还是将它共享?

回答

0

每个编排都会在它自己的线程上执行,因此每个编排都会拥有自己的方法本地变量副本,包括linq查询。所以每次调用该方法时都会编译查询。

不确定如何解决此问题,因为静态类的生存期由编排的生存期决定。你可以实现一个单一的业务流程,然后调用一个非静态的方法。这样,您可以让第一次调用编译查询,并且所有后续调用都使用相同的查询。

+1

我认为你的描述不正确。静态类的生命周期是应用程序域的生命周期,而不是编排的生命周期,如果在应用程序域被回收之前在同一主机上运行,​​则会在实例之间重用静态值,这里提供了一些半相关的想法 - http://blog.sabratech.co.uk/2007/08/thoughts-about-static-members-and-local.html – 2011-03-18 20:31:08

+0

你当然是正确的Yossi。 – 2011-04-07 12:07:27