zoukankan      html  css  js  c++  java
  • Silverlight 程序启动

    使用VS2010创建一个Silverlight应用程序,程序的结构默认如下图:

    Silverlight工程至少由两部分组成,一个是Silverlight应用程序(即图中的SilverlightApplication1项目),一个是承载Silverlight程序的页面(即图中的SilverlightApplication1.Web项目)。
    SilverlightApplication1.Web项目中提供了两个页面,一个是aspx页面,一个是普通的html页面,对于承载Silverlight程序来说,他们没有什么不同,下面以html页面作为目标来解释Silverlight程序的加载过程。

    打开html页面的源代码文件,可以看到如下代码:
    <div id="silverlightControlHost">
        <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
            <param name="source" value="ClientBin/SilverlightApplication1.xap"/>
            <param name="onError" value="onSilverlightError" />
            <param name="background" value="white" />
            <param name="minRuntimeVersion" value="4.0.50826.0" />
            <param name="autoUpgrade" value="true" />
            <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration:none">
                <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="获取 Microsoft Silverlight" style="border-style:none"/>
            </a>
        </object>
        <iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;0px;border:0px"></iframe>
    </div>
    承载页面检测到object标签后,会根据红字部分指示的路径下载SilverlightApplication1.xap包,该包是由Silverlight应用程序打包而成。xap包由开发环境自动打包生成,包含了Silverlight应用程序使用到的各种程序集还有资源。xap包本质上是一个zip格式的压缩包,我们可以使用标准解压缩软件把它解压。针对我们这个项目,xap包解压缩后包含AppManifest.xaml和SilverlightApplication1.dll两个文件,其中AppManifest.xaml文件非常重要,是每一个Silverlight项目都包含的,而dll文件则根据项目的不同而不同。
    AppManifest.xaml文件是一份关于应用程序的基本描述文件,打开我们这个项目的AppManifest.xaml文件,可以看到如下结构:
    <Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
                        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                        EntryPointAssembly="SilverlightApplication1"
                        EntryPointType="SilverlightApplication1.App"
                        RuntimeVersion="4.0.50826.0">
         <Deployment.Parts>
             <AssemblyPart x:Name="SilverlightApplication1" Source="SilverlightApplication1.dll" />
         </Deployment.Parts>
    </Deployment>
    如上,绿色标识的部分是程序集清单,标识改应用程序包含多少个程序集,如果有多个,则此处有多个<AssemblyPart>元素。红色部分是关于程序的入口点的说明,负责告诉Silverlight运行时从哪个程序集加载哪个类型来启动程序,此处的描述就是告诉运行时,在SilverlightApplication1.dll中加载SilverlightApplication1.App类型来启动程序。
    让我们回过头来看SilverlightApplication1项目,里面包含App的类型定义:
    public partial class App : Application
    Application来自于System.Windows命名空间,负责Silverlight应用程序启动的一些工作。每一个Silverlight应用程序都需要有一个继承于Application类的子类来作为入口点,一般VS IDE默认帮我们建立的就是这个App类。如果我们在一个Silverlight项目创建了两个Application的子类会发生什么情况呢?此时需要在项目的属性中,对“启动对象”作一个设置,指定使用哪个子类作为入口点。开发环境在打包xap包时,会根据项目设定,在描述文件中写明是具体哪个子类作为入口点。
  • 相关阅读:
    《Linux性能及调优指南》第二章:监控和基准工具2.1-2.2
    《Linux 性能及调优指南》1.5 网络子系统
    《Linux 性能及调优指南》1.4 硬盘I/O子系统
    《Linux性能及调优指南》1.3 Linux文件系统
    《linux性能及调优指南》 3.5 网络瓶颈
    《linux性能及调优指南》 3.4 硬盘瓶颈
    《linux性能及调优指南》 3.3 内存瓶颈
    你应该使用Python3里的这些新特性
    python异步编程
    异步网络编程aiohttp的使用
  • 原文地址:https://www.cnblogs.com/fre2technic/p/1951228.html
Copyright © 2011-2022 走看看