社区
WPF/Silverlight
帖子详情
老生常谈的一个按需下载的问题!
zdqyundou
2010-05-18 11:36:10
接触Silverlight不是很久,看到一些第三方厂商的产品做演示的时候,有按需下载的模式。自己也很想做一个。查了很多资料也没怎么看明白。
目前我的项目是Silverlight Navigation Application,每个页面都是继承于Page类,相信很多人都这样用,但是随着Page数量的增加,编译后XAP文件越来越大。我把主菜单放在了MainPage.xaml上面 ,点击相应的菜单我希望才下载指定的Page。应该怎么做呢?
...全文
107
7
打赏
收藏
老生常谈的一个按需下载的问题!
接触Silverlight不是很久,看到一些第三方厂商的产品做演示的时候,有按需下载的模式。自己也很想做一个。查了很多资料也没怎么看明白。 目前我的项目是Silverlight Navigation Application,每个页面都是继承于Page类,相信很多人都这样用,但是随着Page数量的增加,编译后XAP文件越来越大。我把主菜单放在了MainPage.xaml上面 ,点击相应的菜单我希望才下载指定的Page。应该怎么做呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cpt_adt2010
2010-05-21
打赏
举报
回复
好难啊,目前还在学如何做东西,优化以后再说
纷享刘晨
2010-05-20
打赏
举报
回复
恩。从理论上来说是可以按照Page划分的。但是如果真的做过实际项目,你会发现能够分开的可能性是非常低的。
按需加载的基本逻辑,楼上都说了,不再赘述了。
如果真的有按需加载的需要,建议学习一下MEF这个框架。MEF就是专门用来处理这个问题的。
THE_ROCK
2010-05-19
打赏
举报
回复
to websco,你说的很好“我觉得主要问题还是在于如何将各个 Page 打包至不同的 XAP 包中,这是考验系统设计功力的。”
貌似我的项目还没有这样的需要把各Page打包到各XAP中去。我现在只是将项目的这是分散压缩了,大小也缩小了,自动去按需吧!
jv9
2010-05-18
打赏
举报
回复
按需加载分为两部分,一是加载XAP资源文件,另一个是加载DLL文件:
1. 按需加载资源文件
如果.xap中包含了庞大的资源文件,会延长下载到客户的时间的,如果这些资源是在需要时才"按需"下载,会带来更好的用户体验。这个实现起来比较简单:通过WebClient 的OpenReadAsync方法下载所需的资源文件,例如图片,下载完成后即可供程序使用了。
2.按需加载Assembly .dll
方法:
1. 通过WebClient 下载Assembly的.dll文件
2. 通过AssemblyPar t实现动态加载Assembly
注意:在调用动态加载Assembly中定义的类的方法上使用[MethodImpl(MethodImplOptions.NoInlining)] ,禁掉JIT method inline, 避免JIT异常
对于你的项目结构来说,可以把功能模块进行划分和抽象,然后设置按需下载即可。
参考:http://www.silverlightchina.net/html/tips/2010/0505/1099.html
websco
2010-05-18
打赏
举报
回复
然后才是从不同的 XAP 包中载入不同的 Page ,这个只是技术问题,大致
根据Uri下载 XAP 包
由 Application.GetResourceStream() 得到 StreamResourceInfo
然后加载 Assembly ,
然后通过 Reflection 得到 Page 的类型,
然后 Activator.CreateInstance( Page类型 )
技术问题而已。
我觉得主要问题还是在于如何将各个 Page 打包至不同的 XAP 包中,这是考验系统设计功力的。
websco
2010-05-18
打赏
举报
回复
首先第一步得要把各个Page分类(比如按子模块),然后分别打包至不同的 XAP 包中,
也就是说要把各个Page分散到不同的Silverlight应用程序项目中,而且有可能有一些Page要共享,至于类库项目的共享,这是肯定的会碰到的。
这些不同的Silverlight应用程序可以共存于同一个Silverlight解决方案中,也可以分散在不同的解决方案中。
楼主先把这一步解决了再考虑按需下载吧。
键盘tops舞者
2010-05-18
打赏
举报
回复
这个问题提的很好,我也关注一下,虽然我没实现
老生常谈
Android HapticFeedback(震动反馈)
下面小编就为大家带来一篇
老生常谈
Android HapticFeedback(震动反馈)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
使用PHOTOSHOP制作ICO图标
老生常谈
,ICO格式的图标转换
问题
。如果你的电脑装有Photoshop,那么就不用其他转换软件了,用PS就可以直接制作出ICO图标。 首先我们
需
要安装Photoshop的
一个
插件(
下载
链接在文章结尾处),把它拷贝在Photoshop安装目录下的Plug-Ins文件夹里就能使用了。记得要重新打开Photoshop才会显示。 打开Photoshop后就会在储存的格式中找到ICO的图标格式。这样大家就可以把自己的头像或喜欢的图片随意的储存为ICO的图标格式。
MongoDB实战之---初级篇
本课程环境:MongoDB 3.4.x CentOS 7.x本课程为初级课程,围绕高阶聚合函数的使用、索引的介绍及原理解析、索引优化、性能优化、副本集搭建及分布式分片集群的搭建和原理解析来对MongoDB进行更深入的学习。本课程对于DBA、开发、BI来说是非常友善的,从是安装集群到使用集群,再到集群的优化,生产上可能遇到的情况都将在本课程中依次出现。如何优化索引,提升查询效率更是
老生常谈
的
问题
。分布式集群如何有效利用空间来换取时间上的增量,达到百万并发。学习完本课程后,同学们将对MongoDB有
一个
系统的认识,并且对如何应用MongoDB开发也会形成一套系统框架,深入学习本课程后,将掌握MongoDB的大多使用场景。
sourceinsight 配置文件
古人云,窈窕淑女,君子好逑。一副好的外表确实让人心旷神怡,同样,一份护眼好看的软件使操作界面对程序员来说也能倍感愉悦,大大提升工作效率。关于程序员视力保护的
问题
,在知乎等平台上的讨论也是
老生常谈
。资源是Source Insight已经配置成护眼模式的配置文件。
加速人生图文使用教程:电脑卡怎么办?加速人生全面提速电脑.zip
加速人生
下载
地址:http://down.admin5.com/network/jiasurensheng.html 电脑卡,是个让人无奈的话题,不给力的电脑既影响办事效率又影响使用者的心情!你是否正在为卡得“一动不动”的电脑系统而纠结不已?小编分享了一些关于各种情况下电脑卡的解决办法,帮助你提速电脑系统,不再为电脑卡纠结!顺便推荐给大家一款功能齐全,使用方面的电脑系统加速软件——加速人生。 相信不少人都为电脑开机速度慢而着急过,开机速度慢主要有个方面的原因,一是桌面上摆放的文件过多,系统读取
需
要时间。这个
问题
的解决方法很简单,就是收拾整理好不常用的文件,尽量避免堆积在桌面上。另一方面,是开机自启软件、程序过多导致。这个
问题
,我们可以用加速人生的“开关机加速”功能来解决。加速人生会自动检测开机自启的软件、程序,提示用户进行“禁止”处理,我们可以根据自身的
需
求禁止一些无用的软件和程序的开机启动。 电脑用了几个小时后,感觉越来越卡,这种情况除了病毒之外,一般都是因为电脑中打开了过多的应用程序,cpu和内存占用过高导致。我们可以用加速人生来关闭一些暂时不用的进程,来提升电脑系统的运行速度。找到加速人生的“程序清理”功能,我们可以根据加速人生的提示来对占用cpu或内存过高的程序进行处理。细心的用户会发现加速人生还能检测提示关闭系统的无用程序。这是加速人生的一大亮点,可以更全面的帮助用户提升电脑系统运行速度。 很多人都会遇到这样的一种情况,电脑刚买的时候感觉用的速度很快,用的时间一长,就发现电脑越来越卡。其实这是因为,随着电脑系统的使用时间变长,电脑里会累积大量的垃圾文件拖系统运行的速度。如何清理掉这些烦人的垃圾文件呢?在加速人生找到“系统清理”功能,来和加速人生一起“一键加速”给你的电脑系统来个“大扫除”吧! “臃肿,体积庞大”的系统盘运行起来当然各种不给力,加速人生针对系统盘设置了专门的清理功能——系统盘大瘦身。在功能界面,点击“立即瘦身”按钮,即可轻松还原系统盘“苗条”的“身材”。 电脑卡是个
老生常谈
的
问题
,我们在日常使用电脑时,要注意对电脑系统的整理和维护。选择一款合适的清理工具,定期对电脑系统进行清理很重要,不妨试试加速人生,一键式操作,全面提速你的电脑,轻松还你洁净顺畅的系统!
WPF/Silverlight
8,735
社区成员
12,029
社区内容
发帖
与我相关
我的任务
WPF/Silverlight
WPF/Silverlight相关讨论
复制链接
扫一扫
分享
社区描述
WPF/Silverlight相关讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章