2012-12-21 44 views
3

首先要做的事情,希望你們都有一個美好的聖誕節:)當我加載我的URL時,實際發生在IIS中的是什麼?

我已經是過去幾年的桌面應用程序開發人員,但我現在正在全職工作(作業移動:) )

所以在過去的幾天裏,我發現我自己不知道什麼時候說一個新的訪問者將訪問我的網址實際發生的事情越來越多..

我剛剛工作相當簡單的基於Signal R的應用程序,我需要幾個單身人士在所有會話中共享,現在在桌面上,這是非常簡單的,但我不確定與網絡:(

所以基本上,這裏是這個問題..

實際上並IIS做什麼時,說5人訪問我的網址,難道他們都得到了應用程序的一個單獨的實例或他們使用同一個?如果你能把它分解成簡單的術語,那太棒了! :)

另外,假設我有一個具有靜態單例的類庫 - 這是所有會話的唯一類實例嗎?

希望有道理:)

感謝您的幫助!

歡呼聲。 ste。

回答

1

這就是所謂的IIS生命週期
完全細節必須從微軟直接讀取和IIS的創造者。
對於所有IIS都不一樣。

Life Cycle Overview for IIS 7.0

Life Cycle Overview for IIS 5.0 and 6.0

,並有如果互聯網上搜索更多。

做,他們都得到了應用程序的一個單獨的實例或他們使用相同的 一個

如果使用多個游泳池的同一個應用程序(web garden)那麼他們的要求是在池之間分割,或者一個池,一個實例是小心處理頁面。

頁面可以從不同的線程處理,但對會話的全局鎖,因此,如果您使用MS會議系列,頁面會處理(預期未使用會話的一個)

每個池都是一個保存靜態數據的實例,並且對於來自該池的所有請求都是相同的。如果您使用兩個池,則有兩組不同的靜態數據。

有關會話鎖定一些問題: Trying to make Web Method AsynchronousWeb app blocked while processing another web app on sharing same session

+0

謝謝你的好答案,網上花園看起來很有趣..你如何管理需要成爲網絡花園中單身人士的東西?某種內存共享對象可能? – Steoates

+0

@Steoates我只找到實際工作的公共數據庫的解決方案。也許有一個共享對象,但看起來並不怎麼樣,還沒有發現。對於池之間的同步,我使用'Mutex',在同一個池中的靜態線程數據之間進行同步,我使用'lock'。我也寫了我完全自定義的會話模塊,以避免鎖定,讓我的網頁異步運行。 – Aristos

1

如果你有一個默認的IIS安裝,那麼你將有一個應用程序池,這將滿足所有的要求。因此,在你的例子中,所有5個人都會共享一個靜態單身人士。

但如果你需要擴展,那麼你將有多個應用程序池。

應用程序池是您的應用程序的一個實例。

如果靜態數據庫連接和類似的靜態,那麼我建議你看看替代方法,所以你不需要靜態。如果它與用戶感興趣的業務有關,那麼如果您需要擴展,您最好考慮其他方式在客戶端之間共享這些內容。

相關問題