若天明 发表于 2015-1-16 14:23:01

来一篇关于NET的ASP.NET功能优化的经常使用办法(二)

你觉得数据库怎么样?9.将SQLServer存储历程用于数据会见
在.NETFramework供应的一切数据会见办法中,基于SQLServer的数据会见是天生高功能、可缩放Web使用程序的保举选择。利用托管SQLServer供应程序时,可经由过程利用编译的存储历程而不是特别查询取得分外的功能进步。

10.制止单线程单位(STA)COM组件
默许情形下,ASP.NET不同意任何STACOM组件在页面内运转。若要运转它们,必需在.aspx文件内将ASPCompat=true属性包括在@Page指令中。如许就将实行用的线程池切换到STA线程池,并且使HttpContext和其他内置工具可用于COM工具。前者也是一种功能优化,由于它制止了将多线程单位(MTA)封送到STA线程的任何挪用。

利用STACOM组件大概年夜年夜伤害功能,应只管制止。若必需利用STACOM组件,如在任何interop计划中,则应在实行时代举行大批挪用并在每次挪用时代发送尽量多的信息。别的,当心不要在机关页面时代创立任何STACOM组件。比方上面的代码中,在页面机关时将实例化由某个线程创立的MySTAComponent,而该线程并非将运转页面的STA线程。这大概对功能有倒霉影响,由于要机关页面就必需完成MTA和STA线程之间的封送处置。
<scriptrunat=server>
DimmyCompasnewMySTAComponent()
PublicSubPage_Load()
myComp.Name="Bob"
EndSub
<script>
<html>
<%
Response.Write(myComp.SayHello)
%>
</html>


首选机制是推延工具的创立,直到今后在STA线程下实行上述代码,以下面的例子所示。
<%@PageLanguage="VB"ASPCompat="true"%>
<scriptrunat=server>
DimmyComp
PublicSubPage_Load()
myComp=newMySTAComponent()
myComp.Name="Bob"
EndSub
</script>
<html>
<%
Response.Write(myComp.SayHello)
%>
</html>


保举的做法是在必要时大概在Page_Load办法中机关任何COM组件和内部资本。
永久不要将任何STACOM组件存储在能够由机关它的线程之外的其他线程会见的共享资本里。这类资本包含像缓存和会话形态如许的资本。即便STA线程挪用STACOM组件,也只要机关此STACOM组件的线程可以实践为该挪用服务,而这请求封送处置对创立者线程的挪用。此封送处置大概发生严重的功能丧失和可伸缩性成绩。在这类情形下,请研讨一下使COM组件成为MTACOM组件的大概性,大概更好的举措是迁徙代码以使工具成为托管工具。

11.将挪用麋集型的COM组件迁徙到托管代码
.NETFramework供应了一个复杂的办法与传统的COM组件举行交互。其长处是能够在保存现有投资的同时使用新的平台。可是在某些情形下,保存旧组件的功能开支使得将组件迁徙到托管代码是值得的。每情形都是纷歧样的,决意是不是必要迁徙组件的最好办法是对Web站点运转功能丈量。倡议您研讨一下怎样将必要大批挪用以举行交互的任何COM组件迁徙到托管代码。

很多情形下不成能将新式组件迁徙到托管代码,出格是在最后迁徙Web使用程序时。在这类情形下,最年夜的功能停滞之一是将数据从非托管情况封送到托管情况。因而,在交互操纵中,请在任何一端实行尽量多的义务,然落后行一个年夜挪用而不是一系列小挪用。比方,大众言语运转库中的一切字符串都是Unicode的,以是应在挪用托管代码之前将组件中的一切字符串转换成Unicode格局。

别的,一处置完任何COM工具或本机资本就开释它们。如许,其他哀求就可以够利用它们,而且最年夜限制地削减了因稍后哀求渣滓接纳器开释它们所引发的功能成绩。

12.在VisualBasic.NET或JScript代码中利用初期绑定
以往,开辟职员喜好利用VisualBasic、VBScript和JScript的缘故原由之一就是它们所谓“无范例”的性子。变量不必要显式范例声明,并可以复杂地经由过程利用来创立它们。当从一个范例到另外一个范例举行分派时,转换将主动实行。不外,这类便当会年夜年夜伤害使用程序的功能。

VisualBasic如今经由过程利用OptionStrict编译器指令来撑持范例平安编程。为了向后兼容,默许情形下,ASP.NET不启用该选项。可是,为了失掉最好功能,激烈倡议在页中启用该选项。若要启用OptionStrict,请将Strict属性包含在@Page指令中,大概,关于用户控件,请将该属性包含在@Control指令中。上面的示例演示了怎样设置该属性,并举行了四个变量挪用以显现利用该属性是怎样招致编译器毛病的。
<%
DimB
DimCAsString
Thiswillcauseacompilererror.
A="Hello"
Thiswillcauseacompilererror.
B="World"
Thiswillnotcauseacompilererror.
C="!!!!!!"
Butthiswillcauseacompilererror.
C=0
%>


JScript.NET也撑持无范例编程,但它不供应强迫初期绑定的编译器指令。若产生上面任何一种情形,则变量是早期绑定的:
被显式声明为Object。
是无范例声明的类的字段。
是无显式范例声明的公用函数或办法成员,而且没法从其利用揣度出范例。
最初一个不同对照庞大,由于假如JScript.NET编译器能够依据变量的利用情形揣度出范例,它就会举行优化。鄙人面的示例中,变量A是初期绑定的,但变量B是早期绑定的。
varA;
varB;
A="Hello";
B="World";
B=0;

为了取得最好的功能,当声明JScript.NET变量时,请为其分派一个范例。比方,varA:String。c语言的编译器,几乎是所有新平台都有的。因此从这点上看,c语言的程序,比其他任何语言更加容易跨平台。

admin 发表于 2015-1-18 13:46:34

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。

再现理想 发表于 2015-1-23 05:34:27

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

仓酷云 发表于 2015-1-31 15:14:08

同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。

再见西城 发表于 2015-2-6 20:42:00

ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。

简单生活 发表于 2015-2-18 16:42:46

能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。

兰色精灵 发表于 2015-3-6 08:55:06

ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。

谁可相欹 发表于 2015-3-13 00:08:18

主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。

蒙在股里 发表于 2015-3-13 00:08:27

主流网站开发语言之PHP:PHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。

金色的骷髅 发表于 2015-3-20 07:01:41

提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。
页: [1]
查看完整版本: 来一篇关于NET的ASP.NET功能优化的经常使用办法(二)