2009-07-17 32 views
1

我有一个ASP.net网站,基本上只是我创建的类库的用户界面。此类库中的每个类都包含一个静态定义类,其中包含对编译查询的静态引用。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); 
    } 
} 

鉴于这种结构,给每一个web页面引用这个库,我有几个问题

问题1:到IIS Web服务器的每个请求实质上开始一个新线程,对吗?

问题2:如果是这样,这是否意味着对于每个请求我最终重新编译这些查询?

问题3:有没有办法减少我重新编译这些查询的次数?

回答

1

静态项目在同一AppDomain内的线程之间共享,因此您不会为每个请求重新编译查询。

0

问题1:每次要求IIS Web服务器是由现有的线程应用程序的线程池处理

问题2:乔尔

问题3已经回答了:它是静态所以只能要么创建(或编译)一次当应用程序启动时