把XAML放在服務端,即改即現<二>.... 把DLL也放服務端
給Xaml需要的C#
上文講到了一種比較好玩而獨特的Silverlight的開發模式-----即改即現。如上文所講的那樣,這種模式本身是比較爽的,你當即改的XAML,當即改的UI,可以不經過編譯階段,直接在界面上顯示。但問題就是,我們實際的業務過程中,一定會有相應的C#代碼來對應這份XAML。而本文怎是闡述我的實現方式。
又得說說傳統的Silverlight開發了
在傳統的開發中,哪怕我們對Silverlight程序進行任何小的改動,我們都要經歷以下的階段。
1:重新生成DLL文件。
2:將所有的DLL文件打包,形成XAP。
簡答的來說,如果本身這個XAP包由20個DLL文件組成(這種屬于比較正常的,通常隨便引用一些第三方的DLL 就湊齊20個了)。我第一次編譯,生成了一個XAP包。后來修改程序了,其中一個DLL文件發生了極小的變化,但這個時候會生成一個新的XAP包。而且請注意,前后這兩個XAP包除了那個修改的DLL,其余完全相同。這多不爽啊。為了一個修改的DLL,別的DLL要重新壓縮一次....
而在我看來,比較好的做法就是,把這個自己寫的業務的DLL,放在服務端。當我的這個業務DLL修改了編譯了,不需要重新打包到XAP里,一來編譯不打包會比之前快得多。加上因為上文已經說到,這個DLL本身沒有包含XAML文件,所以不會很大。我之前做過一個項目,15個頁面,代碼編譯后的DLL文件才50KB不到。非常的小.....。
上代碼
代碼說明
首先照上文所說的那樣,找到 .... \SilverlightApplication2\SilverlightApplication2.web\ClientBin\MyXaml\XamlShow\XamlShow.sln 并切記用Blend打開。
然后用VS打開SilverlightApplication2.sln。并直接按F5鍵,點擊按鈕,會彈出如下界面。
點擊按鈕A.....。
呵呵,在這里有幾點你必須非常注意。
1:按鈕A的點擊事件是放在
2:請注意,這Silverlight類庫項目是放在
這的,放在服務端。當你的Test修改編譯后,刷新界面上即可看到更改的部分。
至于代碼實現,估計又得大跌眼鏡,前后估計才10行代碼吧。
就是一反射而已呵呵。
后話
當然這只是粗略的講解了一種思路而已:將業務代碼放在單獨的類庫中,不混進XAP包。當然,就上面這些代碼本質上并沒完整解決‘代碼后置’的問題。比如現在我要定義一個Converter,我該放哪呢?? XAML上又該怎么引用呢?........ 還是那句話 下下下回 分解
前面的文章講到,這期間寫的文章其實是一個系列。而前兩篇加上這篇,實際上已經把我的框架的主干講了。
任何一個業務系統,都是由許多頁面組成(請注意我說的是企業級開發,互聯網開發我沒接觸).... 。而我們開發的過程其實就是開發一個個頁面的過程。
而在我的開發模式中,一個頁面的加載有三個步驟
1:從服務端下載XAML文件并形成界面(http://www.rzrgm.cn/MySilverlight/archive/2012/05/26/2518798.html)
2: 綁定數據(http://www.rzrgm.cn/MySilverlight/archive/2012/05/24/2516970.html)。
3:‘代碼后置’(本文)。
這三個步驟我分別寫成了三個方法。InnitUI,InnitData,InnitCodeBehind。
呵呵 睡覺去咯。
下一篇講我的 Async初體驗。在我開發Silverlight的過程中,大量的異步編程讓我痛苦。直到響應高手laozhao的號召使用Async Await關鍵才算得到解脫。 Async的使用,也讓我的框架使用起來穩定性和易用性爽得不少....... 嘿嘿。



浙公網安備 33010602011771號