把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.cnblogs.com/MySilverlight/archive/2012/05/26/2518798.html)
2: 绑定数据(http://www.cnblogs.com/MySilverlight/archive/2012/05/24/2516970.html)。
3:‘代码后置’(本文)。
这三个步骤我分别写成了三个方法。InnitUI,InnitData,InnitCodeBehind。
呵呵 睡觉去咯。
下一篇讲我的 Async初体验。在我开发Silverlight的过程中,大量的异步编程让我痛苦。直到响应高手laozhao的号召使用Async Await关键才算得到解脱。 Async的使用,也让我的框架使用起来稳定性和易用性爽得不少....... 嘿嘿。