.Net 動態載入的應用程式

首先,我們不禁要問,為何我們需要開發"動態載入"的應用程式?
優點當然很多…
 

1. 多人共同開發,各模組可分別交由不同的開發人員進行開發。
2. 執行時,使用者尚未用到的模組也都一併載入,應用程式佔用了較多的記憶體,載入時間也比較長。
3. 動態抽換的模組在部署及版本更新作業時有更彈性、快速,更新版本時只要把舊版的模組換掉就行了,不用重新編譯和部署所有模組。
這麼多的好處…那幹麻不用??
 
但是, 真的都沒有缺點嗎?
1. 首先,當然所謂的動態載入,顧名思義就是需要的時候才會載入…
   ( 所以啦..不用的時候或是主程式還沒呼叫到的時候就不會載入….廢話嘛!!… )
   所以,如果這是常用的 模組或類別當然應該預先載入….
   否則豈不是後面越執行越慢??
 
2. DLL 一但執行後就不會被釋放掉,這個不論是 動態載入,或是預先載入 (我不願意稱為"靜態載入")
   都會有的毛病,這是 .Net 當初設計平台架構的問題, 非關後續的程式設計師…
   因此,很可能….原先應用程式只需要記憶體 2k RAM ….到結束時,竟然花了 20MB…
   這當然有相對應的辦法解決,那就是利用 App Domain 來處理,
   不過事情沒想像的那麼容易,由於利用 App Domain 解決了記憶體的耗用,但是卻增加了 參數傳遞的
   困難,(當然嘛….難道你忘了 "能量不滅定律" ????)
 
無論如何想給大家的建議是…動態載入還蠻好用的….大家可以來試試看!!…
 
說穿了…不過是利用
System.Reflection.Assembly 這個類別….
然後利用 Activator 這個類別提供的 靜態 static 函數建立實體….
 
簡單的程式如下:
Dim anAsm as System.Reflection.Assembly = System.Reflection.Assembly.LoadFrom("test.dll")
Dim aType as System.Type = asAsm.GetType("Test.testclass")
Dim obj as Object = Activator.CreateInstance(aType)
 
短短的 3行….你就已經得到了 obj 的實體 Instance ….
 
感想: .Net 真的別小遽了….
 
廣告

About fenjj

Perfect !!??...
本篇發表於 Uncategorized。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s