我应该如何构建我的Silverlight应用程序?

时间:2009-08-05 22:27:44

标签: silverlight architecture

到目前为止,我一直在创建Silverlight应用程序,所有逻辑都压缩成一个xap文件。但随着应用程序规模的扩大, 我认真地认为我应该将Silverlight应用程序分解为更小的多个独立应用程序。

我想知道别人如何解决这个不断增加的问题?

2 个答案:

答案 0 :(得分:17)

如果您希望对您的应用程序进行一些更改,通过重构和拆分部分,请考虑所有这些。

自定义控件获取自己的控件程序集

绝对为您开发的任何自定义控件创建控件程序集。您不仅可以获得自包含控件的好处,还可以在当前和未来的项目中使用,

  • 利用默认控件样式
  • 使用缓存的程序集功能
  • 与其他项目共享组件
  • 投资您的核心代码和控件,而不是投资清理应用程序逻辑(例如,如果您使用静态或样式分析) - 花时间在哪里产生最大影响

考虑动态加载新程序集

您的应用领域中有一些methods available for dynamically loading additional code,可能会抽象出应用中较少使用的部分,并使用此部分加载这些组件。这是一个更复杂且更复杂的应用程序,但它可以提高启动性能。

当您查看大型应用程序时,将代码拆分到其他程序集中需要花费一些时间,并且测试它可能是一个挑战。但是,您最终可能会根据需要加载“子页面”和部分应用程序。

花时间设计系统以加载应用程序的新功能和部分,并构建此框架,可能需要时间才能正确完成。这通常是使用AssemblyPart加载一个新的程序集,您可以将其反射到实例中并从中实例化新对象。

合并资源词典

Resource dictionaries可以允许您在页面之外以及App.xaml之外存储样式,控件模板和其他资源。

缓存的程序集

移动到Silverlight 3后,您可以使用cached assemblies feature将.Xap以外的各个程序集存储在服务器上 - 作为奖励,这些程序集将缓存在计算机上时间。

资源饮食

您是否真的使用存储在XAP文件中的所有图形资源,XAML,控件,字符串资源等?不时进行审核,确保您获得最大的收益。

启动画面

如果您最初只想尝试提高应用程序的性能(下载时间),请考虑创建启动画面。 Silverlight Toolkit samples有一个 - 这是一个简单的Silverlight页面,可以在你的.Xap下载时加载和显示。

远程图形

不要在应用程序/ XAP中包含图像资源,而是将图像移动到CDN或服务器,以便只在需要时加载它们。这通常是一个不错的快速胜利。

简化您的应用

确保你真的需要它是XAML重,图形重,等等。也许它可以简化!

答案 1 :(得分:3)

您应该使用PRISM或MEF框架分发Silverlight模块。

访问http://mef.codeplex.com/