一起谈.NET技术,Silverlight开发廋身攻略(一)

  相信大家在用Silverlight做应用开发时,随着项目的进展系统功能越来越多,肯定为Xap包越来越大而烦恼,Xap包的大小直接影响应用程序的加载速度,给用户造成不良的用户体验。我也曾为这个问题头痛过,经过在网上查阅资料和项目实践发现可通过以下三种方式给Silverlight应用程廋身。

  1、定期检查系统项目模块的引用集,移除多余的引用库

  2、图片资源文件,如果不是必须放在资源中的,可以采用按需加载

  3、将系统划分成多个Silverlight项目,然后根据需要进行Xap加载

  下面我将结合实例来对三种方法进行说明:

  一、定期检查,移除多余引用库

  在我们实际项目开发中,我们有时因技术的需要会引用一些第三方控件、.Net FrameWork框架下的动态库,但后来发现不需要这么做只是在界面上或代码中移除控件,没有对程序集引库进行检查移除,从而导致在Xap包中打入了一些无用动态库,造成资源浪费,Xap包体积增大。这种方法简单,只要在项目日常管理中注意就能解决。

  二、图片资源按需加载

  图片资源在应用系统中占有相当大的比重,如我们的界面上的背景、按钮图标等等。它们都被编译到项目dll文件中,然后打包到Xap中。为了减小Xap包的大小,我们可以把图片资源和Xap包分开存放,当系统需要进行下载。

  操作实例:

  1、用Vs2010添加名称为LoadImage的SL Application项目

  2、在SL Application项目中添加images文件夹,然后在文件夹中添加两张图片1.png、2.jpg,将两张图片的Build Action属性由原来默认"Resource"改成"DesignData",这么做的好处是图片在设计期可用,便于界面设计,程序编译时图片不在Xap包中。如下图所示:   

  3、在LoadImage.Web项目中的ClientBin目录下也添加images目录,并且添加图片1.png、2.jpg。如下图所示:   

    4、在LoadImage项目的MainPage.xaml文件中添加如下代码:


<Grid x:Name="LayoutRoot">
<Grid.Background>
<ImageBrush ImageSource="/images/1.png" />
</Grid.Background>
<Image Grid.Column="1" Source="/images/2.jpg" Height="300" Width="400"></Image>
</Grid>

  设计期的效果图如下:   

  5、图片按需加载的原理

  图片路径一般有反斜杠开头的相对路径和程序集+资源路径两种写法,例如:/images/1.png、/LoadImage;component/images/1.png。前一种以反斜杠开头的相对路径,代表的相对位置是应用程序运行的根目录,即.xap压缩包内,若在这其中寻找不到要引用的文件,则相对路径的回退机制(fallback mechanism )自动在在.xap所在的远程目录中查找,本例即为Web网站的ClientBin目录中寻找加以查找引用,如果两个位置都没有,才会发生错误;后一种程序集+资源路径则代表的绝对位置是引用该图片的XAML文件所在的目录,本例即.xap压缩包内的嵌入资源中,一般都在程序集的dll文件中,通过reflector反编译可以发现图片资源。

  此实例编译发布后,LoadImage.Xap文件大小只有4k,如果将图片以资源(Resource)的形式打入.XAP包中,则LoadImage.Xap的大小是636k。

  按需加载图片实例源代码:下载

  在下一节中,将用两种实现方法对按需加载.Xap包进行实例讲解。

时间: 2024-09-16 03:07:36

一起谈.NET技术,Silverlight开发廋身攻略(一)的相关文章

一起谈.NET技术,Silverlight开发廋身攻略(二)

继上一篇<Silverlight开发廋身攻略(一)>,在上一节中我主要介绍了在实际开发中怎么动态加载图片资源的方法,并附有实例.在这一节中主要给大家介绍MEF(Managed Extensibility Framework)的知识来实现Xap包的动态加载. Managed Extensibility Framework(MEF)是.NET平台下的一个扩展性管理框架,它是一系列特性的集合,包括依赖注入(DI)以及Duck Typing等.MEF为开发人员提供了一个工具,让我们可以轻松的对应用程序

Silverlight开发廋身攻略(“.NET研究”一)

相信大家在用Silverlight做应用开发时,随着项目的进展系统功能越来越多,肯定为Xap包越来越大而烦恼,Xap包的大小直接影响应用程序的加载速度,给用户造成不良的用户体验.我也曾为这个问题头痛过,经过在网上查阅资料和项目实践发现可通过以下三种方式给Silverlight应用程廋身. 1.定期检查系统项目模块的引用集,移除多余的引用库 2.图片资源文件,如果不是必须放在资源中的,可以采用按需加载 3.将系统划分成多个Silverlight项目,然后根据需要进行Xap加载 下面我将结合实例来对

Silverli“.NET研究”ght开发廋身攻略(二)

继上一篇<Silverlight开发廋身攻略(一)>,在上一节中我主要介绍了在实际开发中怎么动态加载图片资源的方法,并附有实例.在这一节中主要给大家介绍MEF(Managed Extensibility Framework)的知识来实现Xap包的动态加载. Managed Extensibility Framework(MEF)是.NET平台下的一个扩展性管理框架,它是一系列特性的集合,包括依赖注入(DI)以及Duck Typing等.MEF为开发人员提供了一个工具,让我们可以轻松的对应用程序

Silverlight开发身攻略(二)

继上一篇<Silverlight开发身攻略(一)>,在上一节中我主要介绍了在实际开发中怎么动态加载图片资源的方法,并附有实例.在这一节中主要给大家介绍MEF(Managed Extensibility Framework)的知识来实现Xap包的动态加载. Managed Extensibility Framework(MEF)是.NET平台下的一个扩展性管理框架,它是一系列特性的集合,包括依赖注入(DI)以及Duck Typing等.MEF为开发人员提供了一个工具,让我们可以轻松的对应用程序进

Win 7系统安全优化、瘦身攻略

  首先 开启 Administrator 用户 删除其他用户!~~这个应该都会吧!~~ 1."以管理员身份运行,所有程序→附件→命令提示符",右击选择"以管理员身份运行", 进入命令提示符后,手工输入"powercfg -h off" 这是干什么的,木星人也会知道-- 2.关闭系统保护 计算机右键属性--高级管理设置--系统保护 3.转移虚拟内存 计算机右键属性--高级管理设置--高级--性能-设置-高级-更改 4.转移"用户的文件&

一起谈.NET技术,案例分析:Silverlight在中国人寿的应用

笔者自2003年首次听到Macromedia公司提起RIA(富互联网应用)一词到现在整整7年了.一度被认为是互联网应用趋势的RIA经历了7年之痒,但仍然没有在互联网上得到大规模普及,特别是企业应用就更加少见.做个不恰当的比喻,传统基于Html的应用就像互联网应用中的绿叶一样,而RIA技术由于酷炫的用户体验效果就像是美丽的花朵.现在开心网和腾讯QQ等商业应用中已经运用了RIA技术在其社交网站中得到应用,但这毕竟还是少数,大多数互联网应用特别是企业级应用仍然选择传统高稳定性与高响应能力的Html应用

一起谈.NET技术,WPF 基础到企业应用系列3——WPF开发漫谈

1.开篇前言      首先很高兴这个系列能得到大家的关注和支持,基于对大家负责和对自己负责的态度,我会不断努力写好这个系列,分享自己的微薄技术和经验,希望在帮助别人的同时也不断提升自己.由于这篇文章稍多,所以读者花的时间长了一些,也希望大家能够见谅,这个系列以后会每周发三到四篇左右(主要是写一篇差不多要花几晚上,感觉思维比较发散),除了讲WPF技术本身之外,也会讲一些项目具体开发,所以敬请关注.在前两次的文章中我们对WPF有了一个比较全面的认识,那么在本篇文章当中,除了讲一些理论知识外,我们会

一起谈.NET技术,Silverlight 2.5D RPG游戏技巧与特效处理:(三)动态光影

通常来说,只要谈到影子及影子制作,首先想到的不外乎3D.游戏中的影子设计大致可分为硬实现和软实现两种,比如像"游戏影子制作技术"这篇文章所谈到3D游戏影子制作方案Projective Shadow.Shadow Map以及Shadow Volume均属于硬实现.硬实现的效果最逼真,相对的运算量也较高:而对于Silverlight开发2.5D网游来说,我们通常会采用折中的软实现去表述场景中的动态光影效果.精致的光影能让玩家充分体验到空间立体感,当然也是2.5D网游所不可或缺的条件之一.

一起谈.NET技术,Silverlight 2.5D RPG游戏技巧与特效处理:(十一)AI系统

谈到人工智能(AI),这个话题就太大了:大学里有<人工智能教程>专门讲这方面的知识,什么大名鼎鼎的人工神经网络.遗传算法等等均可一窥究竟,这里如赘述似乎有些班门弄斧,我们暂且丢它一边去吧. 本节,我的主要目的是与大家共同探讨AI在RPG游戏中的应用.看过之前教程的朋友一定不会陌生,A*算法就是其中的一个重要组成部分:而本系列Demo中则使用了更为高级的改进型A*算法,不仅优化了性能,同时也大幅提升了玩家的操控体验.除此之外,AI更常见于RPG游戏中的角色,接下来我将引领大家循着AI的足迹,逐步