代码之家  ›  专栏  ›  技术社区  ›  Kevin Pang

将类放入aspx和ascx codebehinds的性能惩罚

  •  2
  • Kevin Pang  · 技术社区  · 16 年前

    在aspx/ascx代码隐藏中定义类,而不是预先将它们编译成dll,这对性能有什么影响?我知道这不是一个最佳实践,并且存在很多问题(例如,很难进行单元测试、代码不可重用等),但是当你处理那些每天需要动态修改几次的类时,它确实非常方便,因为这些修改不需要任何类型的应用程序重新启动(例如,应用程序代码changes,更新bin文件夹中的dll)。

    5 回复  |  直到 16 年前
        1
  •  8
  •   CodeRedick    16 年前

    “无。”代码隐藏类被动态编译成一个dll,然后该dll被保留。所以基本上,第一次加载页面时会有一个短暂的延迟,但是之后的速度应该与预编译类的速度相同。

        2
  •  1
  •   David Robbins    16 年前

    在初始编译之后,您应该不会看到性能问题。听起来好像您的业务逻辑经常发生变化,而不一定是网页。

        3
  •  1
  •   devlord    16 年前

    选择是使用动态编译还是编译的DLL,实际上与发布过程的组织方式有关。如果您的应用程序被紧密地编译到DLL中,比您所能预料到的要多,那么您已经测试了构建错误,并且期望在您发布时事情更加可靠。通过动态编译,您可以动态交换.cs文件(例如拖放、ftp)。这意味着你可能更敏捷,但是你可能没有额外的保证步骤来帮助你知道你在保持构建的完整性。

        4
  •  1
  •   Constantin    16 年前

    附带损害-会话重置

    从个人经验来看,用户更可能抱怨由应用程序域回收引起的会话重置,而不是轻微的性能损失。所以,如果您可以将更改从代码转移到数据,并完全避免代码更新,那么一定要做到这一点。这将提高用户的性能:)

        5
  •  0
  •   brock.holum    16 年前

    我不认为在最初的动态编译之后会有性能损失(这将发生在对其代码隐藏进行修改的页面的第一次命中上)。你怎么会一天换几次课?那太糟糕了!

    编辑: 我应该补充一下,这不会像您所说的那样影响单元测试或代码的可重用性。在签入/生成期间,为了可维护性的目的部署未预编译的站点,同时仍然能够运行单元测试、为其他项目部署已编译的程序集(如果需要)等,没有什么能阻止您的部署。

    但是,如果您没有使用源代码管理,并且没有自动化的构建,那么就存在一个全新的问题。我们的团队成员过去常常直接在生产服务器上编辑代码文件。 颤抖