研究NuGet Server過程發現的新東西,不修改Global.asa就能加入Application_Start()/Appliation_Shutdown()事件的新做法---WebActivator!!
這是微軟NuGet開發小組成員David Ebbo所寫的一個程式模組,實現不修改Global.asa就加入Application_Start()/Shutdown()事件,目的在解決網站專案安裝程式庫的一項難題。部分程式庫有在Application_Start()階段加入初始化程序的需求,例如: 讀取設定檔、建立共用物件、處理Assembly參照... 等,一但引用時漏了此步驟,便會導致運作不正常。(我永遠記得第一次玩log4net的情景,就因忘了加Application_Start(),大半天搞不出來氣到想咬人,最後找到91這篇同病相憐的KB才頓然開悟)
安裝程式元件還需要修改Application_Start()才能使用,或多或少提高安裝複雜度,同時也增加安裝失敗的可能(以log4net為例,至少有兩個人跌倒過 XD)。而對NuGet自動安裝來說,自動修改Global.asa加入Application_Start()不但困難,而且還可能搞壞原本程式邏輯,因此最理想的做法在程式元件內部涵蓋這段邏輯,不要勞煩安裝程序或開發人員動手。透過在網站引用WebActivator.dll及在元件程式中加入適當的宣告,就能實現這種不沾手式的事件掛載法。(註: 但要ASP.NET 4.0才支援)
想當然爾,David是NuGet開發者,取得WebActivator的最簡單方法就是搓搓神燈,Add Library Package Reference並輸入webactivator。
共同学习,写下你的评论
评论加载中...
作者其他优质文章