到目前为止,我一直在创建Silverlight应用程序,所有逻辑都压缩成一个xap文件。但随着应用程序规模的扩大, 我认真地认为我应该将Silverlight应用程序分解为更小的多个独立应用程序。
我想知道别人如何解决这个不断增加的问题?
答案 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模块。