2009-07-17 68 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已經回答了:它是靜態所以只能要麼創建(或編譯)一次當應用程序啓動時