关键点: 1.利用WebClient的DownloadProgressChanged事件更新下载进度 2.下载完成后,分析Xap包的程序集Assembly信息 3.利用Assembly反射还原对象并加载到当前页中...wc_DownloadProgressChanged); Uri xapUri = new Uri(HtmlPage.Document.DocumentUri, "ClientBin/MainXap.xap...MainXap.MainPage") as UIElement; this.LayoutRoot.Children.Add(element); } /// /// 从XAP
在SL开发中,通常会将项目按模块分成多个xap实现按需下载,但是由于浏览器的缓存,就算某个模块代码修改过并重新发布到服务器,如果这个xap已经在浏览器缓存中,实际加载时,仍然有可能调用的是本地缓存,而非最新的版本...通常解决这个问题的办法是在xap包的下载地址后附加一个随机数,类似http://xxx.com/abc.xap?t=1235817232 之类。...但是这样相当于强制浏览器每次去重新下载xap文件,缓存机制被完全给干掉了,特别是对于一些大型项目,xap通常比较大,每次重新下载,需要较长时间,用户的体验非常差。...相对比较科学的方法是用"版本号"来替换"随机数",比如http://xxx.com/abc.xap?v=20101001 每次发布时,更新版本号即可。...4、加载主模块xap包时,用类似http://www.xxx.com/SL_App.xap?
重新打包XAP文件“越小越好” 我们知道Silverlight的XAP包实质上就是一个标准的ZIP包,包内有一个AppManifest使得他在Silverlgith运行时中可正确的被解析。...但是Visual Studio 2008在做XAP打包时并没有做压缩。 这里我们要做的是Winzip活Winrar将这个XAP解包,然后再做压缩打包,将扩展名改成xap替换原始文件。...将素材放在sl应用外部 在之前方式中我们都是针对一个sl应用做的,但是当你在构建模块话的sl应用时,将素材文件放在Silverlight XAP包的外部效果会更好。...使用程序集缓存 使用程序集缓存的办法很简单只需要在sl的属性页面,将library Caching设置为true即可 动态加载XAP 在silverlight开发的过程中可以将模块话,分解成多个xap...文件,有一个主xap来调用其他的xap做动态的加载.
" }); itemMsg.Children.Add(new MenuItem() { Text = "menu001", NavigateUri = "Plan/FFM.xap..." }); itemMsg.Children.Add(new MenuItem() { Text = "menu003", NavigateUri = "Plan/FFM.xap..." }); itemMsg.Children.Add(new MenuItem() { Text = "menu005", NavigateUri = "Plan/FFM.xap..." }); itemMsg.Children.Add(new MenuItem() { Text = "menu007", NavigateUri = "Plan/FFM.xap..." }); itemOther.Children.Add(new MenuItem() { Text = "退出登录", NavigateUri = "Plan/MSN.xap"
一、按模块分包 一般大型的Silverlight应用,都会按模块分解成多个silverlight project,编译后就有多个xap包,然后在需要用到的场景按需加载。...我近期开发的这个项目不需要全站Silverlight,而是aspx混合silverlight,说得更白点,就是把相应的子模块xap包嵌入aspx....这样分包就简单多了:直接用js控制dom元素,修改object元素中的source,动态设置成不同的xap即可实现无刷新的加载不同模块。...(这比网上主流的方式:用WebClient动态下载xap包,最终再反射加载,个人觉得更简单。...当然,这种方式不适用于整站Silverlight的项目) 二、按需反射加载xap中的页面 上面讨论的办法,只是解决了按需加载不同的xap文件,但是如果一个xap中有多个页面,如何确定加载某个xap后,显示其中的哪个页面呢
XAP微服务平台是组合单体架构并且具有所有微服务优势的唯一方法。XAP是低延时的分布式微服务平台,由一个机器集群构成为低延时数据访问和极端事务处理来创建一个弹性数据共享数据结构。...6个使用XAP微服务方案的原因 1.粒度控制:使用小粒度的组件来构建微服务是有问题的,有服务管理的噩梦,还有性能问题。XAP的微服务分布式平台是一个较好的实现,它即隔离了服务又提升了性能。...XAP可以异步更新多种通用存储卷,开发这样一个任务对任何想把这个功能集成到他们的微服务架构中是非常轻松的。 ?...只有XAP微服务架构能够可以在一个平台中支持上面的服务,它采用的是一个独特的机制:在系统中使用一种叫做部署单元或者处理单元。XAP的处理单元是用于处理扩展和容错的。处理单元支持Java和.NET。...XAP可以在一个相同的网络中部署多个独立的处理单元或者部署一个有内部依赖的处理单元组。在这个例子中,XAP会组织编排处理单元做到正确的部署,回复和扩展顺序。 ?
这些内容都是来自外部加载进来的xap文件。我可以上传管理自己的xap文件。...ModuleCatalog.CreateFromXaml(new Uri("/OperatingTable;component/ModulesCatalog.xaml", UriKind.Relative)); } 再说一下我需要的,我想通过自己上传xap...这里我发现配置文件都是在xap文件内部的。不过在可以直接传入一个配置文件的流来进行实例化。...OTLeftNavModule.OTLeftNavModule, OTLeftNavModule, Version=1.0.0.0" /> xap...Version=1.0.0.0" InitializationMode="OnDemand" /> 这里就可以自己做上一套asp.net程序来上传xap
打开IIS->站点属性->HTTP头->MIME类型->新建: 扩展名: .xap MIME类型: xapapplication/x-silverlight 扩展名: .xaml MIME...类型: application/xaml+xml Silverlight的页面文件扩展名为xmal,项目编译后生成XAP包 浏览器在页面呈现时无法对xmal、xap进行解析, 需要加入MIME类型(Multipurpose...Internet Mail Extensions)对应, 对xmla、xap调用特殊的插件进行处理。
默认情况下,如果SL项目引用了一些其它程序集(即通俗意义上的dll文件),在编译打包时,这些dll会全部打包到一个xap文件里,随着引用的dll文件越来越多,xap文件会越来越大。...但是如果多个SL项目都要引用相同的程序集时,这些dll会重复打包进每个xap文件,用户在加载多个xap时,实际上是重复下载了这部分dll文件,带宽使用率太低。...为了改善这种情况,SL引用了"应用程序库缓存"的概念,在vs2010的SL项目中,打开SL项目的属性页,会看到一个选项:“通过使用应用程序库缓存减少XAP大小(R)” ?...再稍微唠叨一下:上图中的MySLApp.xap在下载时,怎么知道会去加载System.Runtime.Serialization.Json.zip呢?...步骤3:SL项目引用这个dll(或SL类库),并正确勾选"通过使用应用程序库缓存减少XAP大小(R)”即可 最终在ClientBin目录下,会看到类似下面的输出: ?
Application manifest file is up to date Begin Xap packaging No changes detected....Xap package is up to date ------ Deploy started: Project: HelloPhone, Configuration: Release Any...geffzhang\Documents\Visual Studio 2010\Projects\WinPhone7\HelloPhone\HelloPhone\Bin\Release\HelloPhone.xap...geffzhang\Documents\Visual Studio 2010\Projects\WinPhone7\HelloPhone\HelloPhone\Bin\Release\HelloPhone.xap
现将解决办法如下: 如果您想在IIS服务器上使用Silverlight程序,需要使用xap、XAML文件类型,所以必须在IIS中注册xaml和xap的MIME文件类型。...打开IIS->站点属性->HTTP头->MIME类型->新建: 扩展名: .xap MIME类型: xapapplication/x-silverlight 扩展名: .xaml MIME类型
Transparent" Windowless="true" ID="Xaml1" runat="server" Source="~/ClientBin/SilverlightApplication.xap...type="application/x-silverlight-2-b2" > xap
也就是说有两个xap文件一个是主要的也就是你做的silverlight程序文件,另一个小的是用来做loading的。...参考文章: 技巧:在Silverlight中如何访问外部xap文件中UserControl public partial class Page : UserControl { public ...() { Uri address = new Uri(HtmlPage.Document.DocumentUri, "ClientBin/showcase.xap
辅助程序,本身没有多大意思,其功能是把EAS.SilverlightClient.AddIn和EAS.BPM.SilverlightUI打成一个EAS.SilverlightClient.AdminKit.xap...XAP包的自动升级配置。 ...00 8: 9: 10: EAS.SilverlightClient.AdminKit.xap...:00 13: 14: 15: WF.Demo.SilverlightUI.xap...因为AgileEAS.NET SOA 中间件设置为支持Silverlight的本地存储文件,以缓存XAP包和某些业务数据,我们选择点击“是”,然后重新输入密码进行登录,将会打开系统主界面: ?
在窗口的搜索框输入xap,快速找到xap”/>,其中的value属性值就是后台Silverlight的代码。...6、将ClientBin/BEPB.xap与当前网页网址拼接为http://zx.bjmemc.com.cn/ClientBin/BEPB.xap,用浏览器打开,浏览器自动下载BEPB.xap文件。...7、修改BEPB.xap文件名后缀为BEPB.zip,用压缩文件解压缩,得到的文件夹内容如下图所示。这些就是Silverlight后台文件以及引用文件。
所以再在这里顺便提上一个小技巧:从xap文件中读取文件 读取图片文件: StreamResourceInfo sri = Application.GetResourceStream(new Uri(...StreamResourceInfo sri = Application.GetResourceStream(new Uri("{0};component/{1}", UriKind.Relative)); 0为xap...程序集的名字, 1为要读取的文件在在xap中的路径。
ListBoxSildeShow/img/001.jpg" }; 改成 t = new Test() { Image = "001.jpg" }; 但是要注意的是,运行时请务必确保"001.jpg"与最终的xap...文件要放在同一目录中,如果图片很多,您要是觉得放在一起很杂乱,也可以写成 t = new Test() { Image = "img/001.jpg" }; 这样的前提是xap所在目录下,必须新建一个img...目录,然后把001.jpg放在img目录中 3.资源引用方式 这种方式的前提是图片必须设置为资源,直接打包进xap中,引用的格式为"/程序集;component/图片的资源路径" (不知道如何将图片打包成资源的
Silverlight的XAP文件其实是更换了后缀名的Zip文件。你可以使用一些外部工具例如7zip,将文件进一步压缩。这些工具还可以打开XAP文件检查项目的内容。 ? 10....如果并不是所有用户都需要某个文件,该文件不应该打包在XAP文件中。每一个反对这个说法的人都会说:“带宽是廉价的”,但是如果你有50到100个图片或者别的二进制文件,那么代价会是高昂的。...总之我只会把所有用户都必须的文件打包在XAP中。 11. 你可以将Silverlight部署在IIS之外的其他服务器上。...在服务器上注册XAP文件处理后,只要客户机上安装了Silverlight插件,就可以访问Silverlight应用程序了。 ? 12. 参加Silverlight技术社区,可以从中学到很多东西。
silverlight不能象flash一样,直接以类似xxx.xap?...application/x-silverlight-2" width="100%" height="100%"> xap
visifire图表要工作,必须要他bin目录下的文件支持,其中有一个visifire2.js比较好理解,因为你的网页文件必须要引用他,其中还有一个SL.Visifire.Charts.xap文件,导致...visifire显示空白的原因就在这,因为被IIS咔嚓掉了,我们需要在iis的mime类型中注册 .xap为application。...div层作为容器: 3.生成图表 var vChart = new Visifire2(“SL.Visifire.Charts.xap
领取专属 10元无门槛券
手把手带您无忧上云