zoukankan      html  css  js  c++  java
  • Silverlight开发廋身攻略(“.NET研究”一) 狼人:

      相信大家在用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 上海徐汇企业网站制作yle="color: #ff0000;">x:Name="LayoutRoot">
    <Grid.Background>
    <ImageBrush 上海企业网站制作tyle="color: #ff0000;">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包进行实例讲解。

    声明:此博有部分内容为转载,版权归原作者所有~
  • 相关阅读:
    将Nginx添加到windows服务中
    springboot使用redis管理session
    GIT常用命令
    阻止360、谷歌浏览器表单自动填充
    谈谈对Spring IOC的理解
    同一个Nginx服务器同一端口配置多个代理服务
    LeetCode 653. Two Sum IV
    109. Convert Sorted List to Binary Search Tree(根据有序链表构造平衡的二叉查找树)
    108. Convert Sorted Array to Binary Search Tree(从有序数组中构造平衡的BST)
    LeetCode 236. Lowest Common Ancestor of a Binary Tree(二叉树求两点LCA)
  • 原文地址:https://www.cnblogs.com/waw/p/2217032.html
Copyright © 2011-2022 走看看