我有一个ASP.net站点,它实际上只是我创建的类库的用户界面。此类库中的每个类都包含一个静态定义类,其中包含对已编译查询的静态引用。
像这样:
class MyRecord
{
/*Some Properties,Fields, and Methods*/
internal static class Queries
{
public static Func<MyDataContext, MyRecord> ACompiledQuery =
CompiledQuery.Compile<MyDataContext, MyRecord>(
(MyDataContext db) =>
from mr in db.MyRecords
select mr);
}
}
鉴于这种结构,并且鉴于每个网页都引用了这个库,我有几个问题
问题1:对IIS Web服务器的每个请求基本上都会启动一个新线程,对吗?
问题2:如果是这样,这是否意味着每次请求都会重新编译这些查询?
问题3:有没有减少重新编译这些查询的次数?
答案 0 :(得分:1)
静态项在同一AppDomain中的线程之间共享,因此您不会为每个请求重新编译查询。
答案 1 :(得分:0)
问题1:对IIS Web服务器的每个请求都由应用程序的线程池中的现有线程处理
问题2:Joel已经回答了
问题3:它是静态的,因此只在应用程序启动时创建(或编译)一次