[转自]https://msdn.microsoft.com/zh-cn/library/ms227430(v=vs.80).aspx

C:\Windows\Microsoft.NET\Framework\v4.0.30319>aspnet_compiler -v /test

ASP.NET 提供了两种用于预编译网站的模型。本主题讨论这两种预编译模型,并提供有关为 Web 应用程序选择适当模型的指南。

决策矩阵

使用下表来帮助您决定要使用哪种编译模型。本文档后面将对每种编译模型进行更详细的说明。

 
如果希望 使用此编译模型

快速开发应用程序而不考虑代码的编译。

使用默认编译。

缩短对网站的首次页请求的响应时间。

使用就地编译或部署编译选项之一。

分离源代码和用户界面 (UI) 代码。

使用可更新 UI 的编译。

在不更改源代码的情况下修改 UI 代码。

使用可更新 UI 的编译。

从成品服务器移除所有源代码和 UI 代码。

使用不可更新 UI 的编译。

通过替换特定程序集来更新应用程序。

使用固定名称的编译。

使用具有强名称的程序集提高应用程序的安全性。

使用签名的程序集编译。

默认编译

无需对 ASP.NET 应用程序执行任何手动编译。默认情况下,ASP.NET 运行库在 Web 浏览器首次请求应用程序中的页时编译 Web 应用程序。如果对应用程序中的文件进行了更改,则在下次请求页时,ASP.NET 运行库将确定已更改的文件的依赖项,并且仅重新编译受更改影响的文件。

优点

使用默认编译的优点包括:

  • 简单易用。ASP.NET 编译器会为您完成所有工作。

  • 当预编译网站所需的额外步骤减慢了开发过程时,默认编译是开发过程中可供选择的最佳编译模型。

缺点

使用默认编译的缺点包括:

  • 在首次请求网站时可能会导致大量延迟。

  • 要求将源代码文件存储在成品服务器上。

  • 对服务器上的网站目录拥有文件系统访问权限的任何人都可以获取源代码和 UI 代码。

何时使用默认编译

在下列情况下使用默认编译:

  • 在开发和测试网站时。

  • 用于主要包含静态信息的网站。

  • 用于不经常更改的网站。

就地编译

可以使用 ASP.NET 编译工具 (Aspnet_compiler.exe) 预编译 Web 应用程序。该编译工具调用 ASP.NET 运行库来编译网站,其方式与用户向网站请求页时的方式相同。

如果对应用程序中的文件进行了更改,可以使用 ASP.NET 编译工具重新编译受影响的文件,也可以在下次向应用程序请求页时重新编译受影响的文件。

有关此编译模型的更多信息,请参见如何:预编译 ASP.NET 网站

优点

使用就地编译的优点包括:

  • 缩短了网站对首次请求的响应时间。

  • 无需特殊的部署步骤;编译应用程序的过程完全就像从站点请求页一样。

缺点

使用就地编译的缺点包括:

  • 应用程序的所有源代码必须存储在成品服务器上。

  • 对网站目录拥有访问权限的任何人都可以获取源代码和 UI 代码。

何时使用就地编译

在下列情况下使用就地编译:

  • 经常对网站上的页进行更改。

  • 将源代码文件存储在成品服务器上不存在顾虑。

  • 想要缩短首次页请求的响应时间。

可更新 UI 的预编译

通过使用 ASP.NET 编译工具的 -u 开关,可以将源代码(.cs 和/或 .vb 文件以及 .resource 文件)编译为 DLL 并保留 .aspx 文件中的 UI 标记以供更新。

在将网站部署到成品服务器后,无需重新编译整个网站即可对 .aspx 代码进行更改。

有关此编译方法的更多信息,请参见如何:预编译 ASP.NET 网站以进行部署

优点

可更新 UI 的网站预编译的优点包括:

  • 缩短了网站对首次请求的响应时间。

  • 用户界面开发人员无需重新编译整个网站即可修改网站的外观和行为。

  • 保护应用程序源代码中包含的知识产权,以防止被对网站目录拥有文件系统访问权限的任何人意外看到。

缺点

可更新 UI 的网站预编译的缺点包括:

  • 在部署到成品服务器之前,需要执行单独的编译步骤。

  • 对网站目录拥有访问权限的任何人都可以获取应用程序 UI 代码(.aspx 文件)中包含的知识产权。

  • 多个页不能引用同一 CodeFile 类。

何时使用可更新 UI 的预编译

在下列情况下进行可更新 UI 的应用程序预编译:

  • UI 设计人员与源代码开发人员独立工作。

  • 源代码包含要加以保护以防被意外看到的知识产权。

  • 不想将源代码存储在成品服务器上。

不可更新 UI 的预编译

ASP.NET 编译工具可将应用程序的所有源代码(包括 UI 文件,如 .aspx 和 .ascx 文件)编译为部署在应用程序的 Bin 目录中的 DLL。

有关此编译方法的更多信息,请参见如何:预编译 ASP.NET 网站以进行部署

优点

不可更新 UI 的预编译的优点包括:

  • 缩短了网站对首次请求的响应时间。

  • 保护应用程序源代码和 UI 代码中包含的知识产权,以防止被对网站目录拥有访问权限的任何人意外看到。

缺点

不可更新 UI 的预编译的缺点包括:

  • 在部署到成品服务器之前,需要执行单独的编译步骤。

  • 对应用程序 UI 进行很小的改动就需要重新编译整个网站。

何时使用不可更新 UI 的预编译

在下列情况下使用不更新 UI 的网站预编译:

  • UI 代码中包含要加以保护以防被意外看到的知识产权。

  • 只希望将已编译的 DLL 放在成品服务器。

预编译为固定名称的程序集

ASP.NET 编译工具对编译期间生成的程序集使用随机名称。每次重新编译应用程序,程序集的名称就会更改。

由于程序集名称会更改,因此为维护一个程序集就必须重新部署整个应用程序。通过使用 ASP.NET 编译工具的 -fixednames 开关,可以为应用程序中的每个页分别创建一个程序集。程序集的名称在后续编译时不会更改,因此可以创建只替换已更改的程序集的应用程序 Service Release。

由于使用 -fixednames 开关将为每个页创建一个单独的程序集,因此应限制应用程序中的页数。

有关此预编译方法的更多信息,请参见如何:使用 ASP.NET 编译工具生成固定名称

优点

预编译为固定名称的程序集的优点包括:

  • 每个程序集的名称不会随着多次编译而更改,因而无需重新部署整个应用程序即可以替换特定的程序集。

  • 对应用程序的次要更新可能更具有针对性。

缺点

预编译为固定名称的程序集的缺点包括:

  • 需要分别为应用程序中的每个页创建一个程序集。这可能会为包含许多页的站点创建大量程序集。

何时预编译为固定名称的程序集

在下列情况下将网站预编译为固定名称的程序集:

  • 需要在不替换整个应用程序的情况下维护 Web 应用程序。

预编译为签名的程序集

可以使用 ASP.NET 编译工具创建可部署到服务器的全局程序集缓存 (GAC) 或应用程序的 Bin 目录中的具有强名称的程序集。使用签名的程序集使得恶意用户更难用恶意代码替换应用程序的程序集。

有关此编译方法的更多信息,请参见如何:为预编译网站的程序集签名

优点

预编译为签名的程序集的优点包括:

  • 通过使程序集更难被恶意代码替换,签名的程序集提高了应用程序的安全性。

缺点

预编译为签名的程序集的缺点包括:

何时预编译为签名的程序集

在下列情况下将网站预编译为签名的程序集:

  • 用户有权访问应用程序目录或 GAC,并且能够替换应用程序的程序集。

  • 希望限制第三方替换代码所生成的程序集的能力。

[转][ASP.NET]ASP.NET 预编译网站的更多相关文章

  1. ASP.NET MVC5 视图预编译

    ASP.NET MVC5 视图预编译 ASP.NET MVC5 视图预编译   关于Razor视图及引擎原理,就不多说了. 这里通俗或者不恰当地说,cshtml视图文件是先编译成dll文件,再通过视图 ...

  2. Asp.Net Core 禁用预编译

    在.NET Core 2 Web API应用程序中,MS VS 2017中的发布到文件夹功能产生: <ProjectAssembly>.PrecompiledViews.dll <P ...

  3. ASP.NET 动态编译、预编译和 WebDeployment 项目(转)

    概述 在 Web 服务器上,既可以部署源文件,也可以部署编译后程序集. 若部署源文件,则当用户访问时,Web 应用程序会被动态编译,并缓存该程序集,以便下次访问. 否则,若部署程序集,Web 应用程序 ...

  4. 网站优化记录-通过命令预编译Asp.net 网站,成功优化到毫秒级别。

    在去年一次项目上线时发现部署的站点首次访问跟回收后响应特别慢.(使用的是vs工具预编译的方式发布),在随后找到解决办法是通过命令预编译Asp.net 网站,成功解决站点响应在毫秒级别. 预编译 ASP ...

  5. 预编译 ASP.NET 网站以进行部署

    预编译 ASP.NET 网站以进行部署和更新 打开一个命令窗口并定位到包含 .NET Framework 的文件夹. .NET Framework 将安装在以下位置. %windir%\Microso ...

  6. [转]预编译 ASP.NET 网站

    转自:如何:预编译 ASP.NET 网站 Visual Studio 2005   预编译 ASP.NET 网站可缩短用户的初始响应时间,因为页在第一次被请求时无需编译.这对于经常更新的大型网站尤其有 ...

  7. ASP.NET网站发布-允许更新此预编译站点 打勾与不打勾的区别

    发布网站时在打开的对话框中,有一个选项是至关重要的,那就是“允许更新此预编译站点”: “允许更新此预编译站点”这一项,默认情况下,前面是打上一个√的,至于要不要打上一个√,是可选的,那么,打勾与不打勾 ...

  8. ASP.NET 预编译

    ASP.NET 预编译概述 https://msdn.microsoft.com/zh-cn/library/bb398860%28v=VS.90%29.aspx 如何:预编译 ASP.NET 网站以 ...

  9. ASP.NET 预编译命令(解决发布后第一次访问慢问题)

    ASP.NET 编译工具 (Aspnet_compiler.exe) 官方说明 新建bat文件   @echo off   CD /d C:\Windows\Microsoft.NET\Framewo ...

随机推荐

  1. Bitmap 位图

    转自: http://dongxicheng.org/structure/bitmap/ 1.  概述 位图(bitmap)是一种非常常用的结构,在索引,数据压缩等方面有广泛应用.本文介绍了位图的实现 ...

  2. Docker:Err http://archive.ubuntu.com trusty InRelease & E: Unable to locate package [name] 问题

    参考: Docker containers can't resolve DNS on Ubuntu 14.04 Desktop Host Unable to locate package错误解决办法 ...

  3. Java FastJson 介绍

    1.前言 1.1.FastJson的介绍: JSON协议使用方便,越来越流行,JSON的处理器有很多,这里我介绍一下FastJson,FastJson是阿里的开源框架,被不少企业使用,是一个极其优秀的 ...

  4. 使用webuploader实现文件的断点续传

    webuploader是百度Fex团队开发的一款上传插件,对于现代浏览器采用了HTML5的方式进行上传,二为了兼容IE浏览器则采用了Flash的方式作为补充. 首先,这个插件在全局仅暴露一个WebUp ...

  5. poj 2828 Buy Tickets 树状数组

    Buy Tickets Description Railway tickets were difficult to buy around the Lunar New Year in China, so ...

  6. 创建 shiny 应用程序

    R 本身是一个优秀的数据分析和数据可视化平台.然而,我们通常不会将 R 和分析脚本提供给客户,让客户自己运行.数据分析的结果不仅可以在 HTML 网页.PDF 文档或 Word 文档中显示,还可以呈现 ...

  7. 使用向量化的 if:ifelse

    进行分支计算的一个替代方法是 ifelse( ).这个函数接收一个逻辑向量作为判定条件,并且返回一个向量.对于逻辑判定条件内的每一个元素,若是 TRUE,则选择第 2个参数 yes 中所对应的元素:若 ...

  8. 常用 Math 属性及方法

    Math 对象 Math.PI     π    3.141592653589793 Math.ceil('2.5')    Math.ceil(2.1)    向上取整   3 Math.floor ...

  9. 雷林鹏分享:Ruby CGI Cookies

    Ruby CGI Cookies HTTP协议是无状态协议.但对于一个商业网站,它需要保持不同的页面间的会话信息. 如用户在网站注册过程中需要跳转页面,但又要保证之前填写的信息部丢失. 这种情况下 C ...

  10. HDU1698 线段树入门之区间修改/查询(lazy标记法)

    Just a Hook Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...