模塊的所有功能都可以在應用程序專用的global.asax文件中實現。然而,反之則不然,因為global.asax提供了模塊所沒有的其他幾種事件和特徵,諸如會話開始事件,或者能夠用object標記聲明應用程序或者會話範圍的對象。

注意,模塊的一重要優點是,可以在機器級上對它們進行部署。通過在gac中部署模塊的程序集,既可以把模塊直接增加到及其範圍的machine.config,也可以單獨倍增應用程序的web.config文件,而不必重新將程序集複製到每個應用程序的bin目錄下。global.asax文件的主要優點是,它支持應用程序啟動和結束時,以及每個會話啟動和結束時發出的額外時間。global.asax文件還支持聲明式對象實例化,但是正如我們了解的那樣,這是大多數開發者都不大願意使用的一個特徵。

作為一條基本準則,通常比較明智的做法是:把其他應用程序不用的應用程序特有的特徵置於global.asax中。如果發現自己在構建一個對多個應用程序都有的特徵,諸如響應計時器等,則可以考慮把它構建成一個模塊,而不是直接把它編譯成global.asax.

模塊和global.asax的特徵對比如下圖:

特徵 模塊 global.asax

可以接收HttpApplication產生的所有事件的事件通知 支持 支持

可以接收Session_Start/End和Application_Start/End事件的事件通知不支持支持

可以在機器級進行部署 支持不支持

支持聲明式對象的實例化不支持支持


推薦閱讀:
查看原文 >>
相关文章