[转自]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. Gym 101246J Buoys(三分查找)

    http://codeforces.com/gym/101246/problem/J 题意: 给定x轴上的n个点的坐标,按顺序从左到右给出,现在要使得每个点的间距相同,可以移动每个点的坐标,但是不能改 ...

  2. SpringBoot创建多模块方式以及打包方式

    springboot重构多模块的步骤 模型层:model 持久层:persistence 表示层:web 步骤: 正常创建一个springboot项目 修改创建项目的pom文件,将jar修改为pom ...

  3. 递归--练习9--noi8758 2的幂次方表示

    递归--练习9--noi8758 2的幂次方表示 一.心得 找准子问题就好 二.题目 8758:2的幂次方表示 总时间限制:  1000ms 内存限制:  65536kB 描述 任何一个正整数都可以用 ...

  4. Android之Glide(非常好用的图片加载框架)

    谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech. Glide是一种快速.高效的开源媒体管理和Android的包裹mediadecoding图像加载框架,内 ...

  5. bzoj1058: [ZJOI2007]报表统计 stl xjbg

    小Q的妈妈是一个出纳,经常需要做一些统计报表的工作.今天是妈妈的生日,小Q希望可以帮妈妈分担一些工作,作为她的生日礼物之一.经过仔细观察,小Q发现统计一张报表实际上是维护一个可能为负数的整数数列,并且 ...

  6. POJ 3126 primepath bfs

    题目链接:http://poj.org/problem?id=3126 题意:1维的坐标轴,给出起点和终点,求从起点到终点变换经历的最短的步数.起点,终点和中间变换的数字都是4位,而且都是质数. 思路 ...

  7. 在ubuntu16上进行nginx+uwsgi+django部署的简要步骤

    网上有很多部署教程,说了一大堆,遇到坑还是要自己一个个解决,这里有几个比较重要的坑大家一定要注意. 1.首先要安装python和python-dev环境,如果没有安装python-dev后面安装有些依 ...

  8. ASP.NET(c#) 日期选择控件的另一种实现方法

    这篇文章是在一个英文网站发现的,完全使用ASP.NET实现了日期选择的基本功能,没有使用js,原文链接http://geekswithblogs.net/plundberg/archive/2009/ ...

  9. JS 取出DataGrid 列

    var dt = document.all.<%= dgList.ClientID %>//找到你的grid在客户端的table for(var i = 1; i < dt.rows ...

  10. SharePoint Development - Custom List using Visual Studio 2010 based SharePoint 2010

    博客地址 http://blog.csdn.net/foxdave 之前两次我们定义了内容类型和字段,我们现在用它们为这一讲服务--创建一个自定义列表. 打开Visual Studio,打开之前的工程 ...