【问题标题】:Optimize loading an XAP file with an asp.net website使用 asp.net 网站优化加载 XAP 文件
【发布时间】:2010-06-10 13:16:17
【问题描述】:

我一直在使用 Silverlight 4 和 silversprite (http://silversprite.codeplex.com/) 开发游戏

这个游戏非常依赖于内容,使用了大量的音频和图像。我的内容文件夹大约有 90 mbs 的东西。 因此,我的 XAP 文件大约为 60 MB,并且需要 5 分钟从网站下载,然后任何用户才能开始播放。

我正在使用 Visual Web Developer 2010 创建我的站点并加载 XAP。有没有一种方法可以让我从 XAP 中取出内容并将其放入我的 ASP.net 站点项目中?或者也许将我的内容文件上传到网站的存储空间? 这将使我的 XAP 文件下载速度更快。

有人有建议吗? 谢谢!

【问题讨论】:

    标签: asp.net silverlight silverlight-4.0 loading


    【解决方案1】:

    是的,在 XAP 中只包含初始屏幕所需的内容。将您需要的其他内容放在其他 XAP 中(如果您需要并理解清单 xml)或者只是简单的 zip 文件就可以了。也许每个“级别”或其他任何一个 Zip。

    您可以使用WebClient 下载压缩包,然后使用StreamResourceInfoApplication.GetResourceStream 访问压缩包中的内容。

    这个blog虽然现在有点老了,但仍然带有基本的想法,并且基本上仍然是当前使用的技术。

    【讨论】:

    • 我已经研究过这种方法,它看起来很棒!虽然我有一个特殊的情况:我在 Silversprite 中编程,而不是纯 Silverlight:这意味着,我没有在 xaml 文件中编写我的游戏。我的 XAP 由纯 C# .cs 文件组成。所以这让它变得非常困难。我在同一个解决方案中有一个网站项目和我的 Silverlight (silversprite) 项目。所以这就是我想知道的: 选项 #1:在我的 silersprite 项目中,我使用 Texture2D.FromFile,并从我的外部网站加载纹理。选项 #2:我从我的 WEBSITE 项目中引用并加载纹理。有什么建议吗?
    • @thwoneawaited:无论您是使用 Xaml 还是主要使用 C#,XAP 的大部分内容都将是图像、音频等资源。我的建议是将这些资源放在单独的 zip 文件中。您可以使用诸如 Texture2D.FromFile 之类的方法从流中加载。流又是使用Application.GetResoureStream 获取的。
    【解决方案2】:

    绝对称它为Application Library Caching。我已经非常成功地使用了它,它现在是一个标准的操作程序,特别好的是它的资源程序集应用程序。

    直接来自 msdn ...

    资源文件通常是应用程序使用的任何非可执行数据文件,例如图像、音频和视频文件。资源文件在某些​​上下文中也可以具有特定的含义。例如,在应用程序本地化的上下文中,资源文件指的是 .resx 文件,您可以将其部署在本地化的卫星程序集中。

    它继续提供一些非常有用的信息

    使用 Silverlight,您可以部署 资源文件有以下几种方式:

    •作为单个文件 应用程序包。

    •作为您检索的单个文件 按需提供。

    •作为嵌入到程序集中的文件 应用程序包。

    •作为嵌入到程序集中的文件 一个外部库包。

    •作为嵌入程序集中的文件, 您按需检索。

    这是其他答案中建议的内容

    【讨论】:

    • 这在这种情况下并没有多大帮助。当您的 xap 更改时,它很有用,因为现有的库 zip 保持静态并且通常不需要再次下载。但是,如果它们被浏览器缓存或客户端第一次访问时,所有库都会在应用程序加载之前下载。如果 Silverlight 能够确定哪些库是需要的,哪些库在启动时不需要,那就太好了。
    • 实际上您可以创建自己的库(可以包含您想要的任何内容)并让框架处理缓存(不错:)),除非您退出,否则没有其他方法可以解决浏览器或向用户请求更多空间都令人讨厌(并且必须如此)
    • 在语法方面也更加友好,因为您将使用为您生成的资源包装器。
    • 我在回复您的第一个版本的答案,您提供应用程序库缓存作为解决方案。我指出这对问题中概述的情况没有帮助。正如您稍后发布的,文档中提到了其他技术。其中一种方法是我在回答中概述的。
    • 很抱歉我的第一个版本有点含糊,我承认你的回答确实更适合这个问题,我只是简单地提到给猫剥皮的方法不止一种,所以我觉得我的回答有优点。
    猜你喜欢
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多