5

我们正在开发使用 DotNetNuke 作为框架的 Web 应用程序,并使用我们的自定义模块来实现所需的功能。问题是,当您对代码进行任何更改时,加载网站需要很长时间。我每次重新启动最多需要 1 分钟,这真的很慢。这导致非常缓慢的开发-重建-测试周期。

我们正在使用控制台项目和 winforms 项目作为新功能的测试平台,以加快开发速度,但仍有许多 UI 功能必须通过浏览器完成。

是否有人对如何加快/防止在 Web 应用程序的 bin 文件夹中发生更改时发生的 appdomain 重启有任何提示?

4

3 回答 3

1

当您添加/更改页面时,DNN 会按需编译,如果您预编译它们,您的周转时间应该会快得多。

于 2009-03-31T06:18:56.093 回答
1

当与大型 Web 应用程序一起使用时,您遇到了 ASP.NET 的一个缺点。

DotNetNuke 有许多重要的 DLL 和 VB 文件,如果您所做的只是更改一个 DLL,它们都必须重新处理。如果您的 bin 中有 50 个模块 DLL,则所有 50 个模块 DLL 将在您的下一个应用程序请求时由 ASP.Net 重新处理。

这是我的建议:

将以下文件夹连接到源代码管理(不是整个 DNN 文件夹):

  • bin(我建议忽略所有 DNN DLL,以便升级更顺畅)
  • Portals_default\Skins
  • Portals_default\Containers
  • js
  • DesktopModules(忽略管理员或任何内置模块)
  • 图像(如果您愿意,可以忽略核心 DNN 图像,或者您自己的任何笨重图像文件夹,例如数千张客户照片)
  • (可选)CompanyName\(您可能希望将其他需要对 DLL 的相对访问权限的 .NET 项目保留在 bin 文件夹中)

当您的一位开发人员需要重复编译/页面加载时,他将通过消除 bin 文件夹中尽可能多的 DLL 获得最大收益。如果可以的话,它也将有助于使用准系统皮肤进行测试(它们很容易制作)。

准系统皮肤(最多应使用 1 或 2 个皮肤对象)和绝对最少的 DLL(DNN 核心 + 您自己的最低限度)将为您提供最佳的开发速度。

当您的开发人员完成一个模块的重点开发后,他可以更新他从源代码管理中删除项目的那些文件夹(此处为 svn),在完整的 DLL/Skin 集的上下文中完成对他的代码的测试,他将被设置。

有时这是值得的麻烦。我无法让您将 ASP.NET 重新处理时间缩短到几秒钟,但我可以让您缩短到 10-15 秒。(假设您在 SSD 上运行)

就生产重启而言,请确保您的应用程序池在非工作时间回收。

我研究了多核设置是否可以以某种方式减少重新处理时间,但没有任何运气(我有一个关于服务器故障的悬而未决的问题)

于 2011-04-26T05:44:41.363 回答
0

也许这会对你有所帮助?

加快 ASP.NET 中的构建时间

于 2011-03-22T17:48:56.093 回答