我有一个Visual Studio 2005 / C# ClickOnce应用程序,它从Web service获取所有数据。我已经将应用程序调整到了对用户来说非常敏感的地方,即使它必须从Web服务中获取几乎所有内容的数据。
然而,创业公司仍然相当迟钝。似乎需要一段时间才能生成第一个Web服务调用。在那之后,没关系。
如何加快此类应用程序的启动速度?我是否需要生成序列化程序集?
答案 0 :(得分:4)
花一些时间分析应用程序加载的程序集。这将对您的应用程序的加载时间产生最大的影响。如果您的类型仅在有时使用,请将它们移动到另一个组件。 ClickOnce可以根据需要优化组件的下载,因此在加载时减少所需的组件数量将使其加载速度更快。
你也可以使用一种“stub”启动程序,它具有最小的程序集依赖性,可以动态加载其他程序集(Assembly.Load),并在加载后调用实际处理。
答案 1 :(得分:3)
您可以使用ClickOnce文件组将应用程序拆分为可管理的部分,然后在需要时使用ClickOnce API下载组。文章 ClickOnce File Groups 解释了如何执行此操作。
答案 2 :(得分:1)
确保您获得.NET 3.5 SP1,因为在启动方面有显着的性能改进。特别是WPF应用程序。
对于Web服务调用,如果确保在编译时生成序列化程序集,则可以加快速度。根据我的记忆,Visual Studio不知道何时自动生成此文件,但您可以使用SGEN.EXE。
它创建一个单独的程序集,例如MyApp.XmlSerializer.dll,其中包含Web服务调用的所有序列化代码。如果没有这个,您的应用程序将对程序集执行失败的探测,然后动态生成代码并在内存中编译它,这就是您的第一个Web服务调用很慢的原因。