asp.net

位置:IT落伍者 >> asp.net >> 浏览文章

ASP.NET 2.0的编译模型


发布日期:2023年01月29日
 
ASP.NET 2.0的编译模型

支持两种编译模型(Compilation Model)

一为动态编译(Dynamic Compilation)另一个为先行编译(Precompilation)

这让程序设计师可以有更宽广的选择以决定不同网站何时该用何种编译模型不但弹性大大提升且若采用先行编译网站执行效能还可以更高分述如下

(一)ASPNET网站动态编译(Dynamic Compilation)

在ASPNET 时就已经支援网站动态编译也就是使用者第一次请求网站网页时ASPNET会先将网站程式编译成一个dll组件档而后续的请求就会以此来回应而编译过后的网站执行效能明显较未编译网站快上许多

然而虽说ASPNET 具有动态编译的特性但它只支援如aspxascxnfig或globalasax这几种档桉类型只要它们有异动就会触发系统进行动态编译但这个模式有个很明显的问题存在就是像bin目录下的组件资源档Web Services等等在程式设计阶段也常进行修改但这些档桉即使用异动也不会触发系统重新进行编译因此每每VSNET 的专桉有修改异动必须手动重新编译整个专桉如此使用浏览器执行网页才会显示最新修改的程式页面

但是可能不少人嫌烦或者是初学者根本不知道修改后要手动重新编译因此微软针对动态编译又再进行了更人性化的改良现在针对类别Web Service具型别的DataSetMaster PageThemes也支援异动时的动态编译各位只要针对IE浏览器重新Refresh就会自动触发系统进行重新编译看到的也当然是最新的画面省却程式设计师必须手动进行编译算是一个贴心的改良

ASPNET 动态编译和ASPNET 很像但是更完美了且当您建置(Build)整个Web网站后在bin目录并不会产生dll的专桉程式许多ASPNET 的程式设计师开始惊慌疑惑与不安为什麽找不到专桉dll?没有dll档要如何部署网站?等等的疑惑其实没什麽好疑惑的各位之所以会疑惑是因为你把ASPNET 当作是普世的标准凡是违反它的作法皆为异类进而ASPNET 的动态编译就成为您眼中的〝异类〞但那是人的执着心与本位主义作崇的关系事实上ASPNET 的动态编译才是更完美完美到根本不再需要dll只要有使用者进行请求时(Request)系统会自动进行动态编译(仍然看不见dll档)所以若您要部署网站时利用复制网站工具将aspxaspxcsnfig类别档全部复制一份到新网站就行了(唯独没有dll档)剩下的事情动态编译会替您全部打理好

(二)ASPNET网站先行编译(Precompilation)

除了上面所讲的动态编译外ASPNET 尚提供先行编译(Precompilation)网站的功能它透过「ASPNET_ Compilerexe」这个指令来预先编译整个网站祭司用通俗观点来说明这样的做法有几个好处

()节省网页第一次编译的时间以往在ASPNET 这个编译的机制虽然有效加速ASPNET网站整体性能但许多使用者或不明究里的初学者却抱怨第一次执行感觉好慢而预先编译整个网站是连第一次都省掉了大概也不会有人再抱怨这个问题了

()保护网页程式码智慧财产在ASPNET 时可以将Code Behind编译进dll之中但是若是以InLine Code开发或HTML标签开发的程式则是一点保护作用也没有此外即便您用Code Behind模式开发Web应用程式仍然会有许多标签会产生在aspx之中这种情况尤以ASPNET 更甚如SqlDataSource连SQL命令都会显示在HTML之中故透过预先编译不但连程式码都可以编译进去甚至连aspx网页中的HTML标签也可以一并编译进去对于程式码的保护可以说多了一层保障与选择

然而我们来看看微软对于先行编译好处的官方说法

()由于页面和程式码档不需在第一次要求时编译因此使用者可得到更快的回应时间这对于经常更

新的大型网站特别有用

()使用者浏览网页之前识别编译时期错误的方法

()不需原始程式码即可建立可部署到实际执行伺服器已编译网站版本的能力

上一篇:在JavaScript中调用ASP.NET WebService的简单方法

下一篇:ASP.net实现无扩展名的URL重写