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

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

目录
相关文章
|
7天前
|
存储 开发工具 Android开发
使用.NET MAUI开发第一个安卓APP
【9月更文挑战第24天】使用.NET MAUI开发首个安卓APP需完成以下步骤:首先,安装Visual Studio 2022并勾选“.NET Multi-platform App UI development”工作负载;接着,安装Android SDK。然后,创建新项目时选择“.NET Multi-platform App (MAUI)”模板,并仅针对Android平台进行配置。了解项目结构,包括`.csproj`配置文件、`Properties`配置文件夹、平台特定代码及共享代码等。
|
9天前
|
开发框架 .NET C#
VSCode开发.net项目时调试无效
【9月更文挑战第22天】在使用 VSCode 开发 .NET 项目时遇到调试问题,可从项目配置、调试配置、调试器安装、运行环境、日志和错误信息等方面排查。确认项目类型及文件配置,检查 `launch.json` 文件及配置项,确保调试器扩展已安装并启用,验证 .NET 运行时版本和环境变量,查看 VSCode 输出窗口和项目日志文件,检查权限及代码错误。若问题仍未解决,可查阅官方文档或社区论坛。
|
14天前
|
人工智能 前端开发 开发工具
解读.NET 技术的开发潜力
本文全面介绍了.NET技术在软件开发领域的核心优势、创新应用及面临的挑战。.NET以其统一的开发平台、强大的工具和跨平台能力,成为企业级应用、Web应用乃至游戏开发的理想选择。然而,在性能优化、容器化及AI集成等方面仍需不断突破。通过积极拥抱开源和社区驱动模式,.NET将持续推动软件开发的进步。
33 1
|
21天前
|
人工智能 前端开发 Devops
.NET技术自发布以来,在软件开发领域发挥了重要作用
【9月更文挑战第12天】.NET技术自发布以来,在软件开发领域发挥了重要作用。本文分为三部分探讨其在现代开发中的应用:首先介绍.NET的核心价值,包括语言多样性、强大的开发工具支持、丰富的类库、跨平台能力和活跃的社区;接着分析其在企业级应用、Web开发、移动应用、云服务及游戏开发中的实际应用;最后讨论.NET面临的挑战与未来趋势,如性能优化、容器化、AI集成及跨平台框架竞争等。通过不断的技术创新和社区驱动,.NET将持续推动软件开发的进步。
27 4
|
26天前
|
传感器 应用服务中间件 Linux
C#/.NET/.NET Core技术前沿周刊 | 第 3 期(2024年8.26-8.31)
C#/.NET/.NET Core技术前沿周刊 | 第 3 期(2024年8.26-8.31)
下一篇
无影云桌面