小妖女 发表于 2015-1-18 11:29:43

ASP.NET网页编程之在Lambda表达式中举行递回挪用仓酷云

你所列的那些其实差不多都可以称为应用服务器(servlet应该说是一种语言更合适)net网页编程是开放的,相同的工具就会有很多公司在做,加上net网页编程已经发展了很多年了,因此这些工具就很多了。他们很多都是类似的。Lambda表达式是一个匿名的办法,在开辟期我们是不晓得其办法名是甚么的,以是我们要怎样递回挪用呢?
假如你看过我这文章《让您知道您的办法是被何“人”挪用》的话,你应当会“啊哈”的拍一下思想,思绪就出来了,没错!!就是间接用StackFrame猎取以后实行的办法,然后间接Invoke便可。

示例代码:


<br>classTest

<br>
<br>
<br>{

<br>
<br>/**////<summary>

<br>///

<br>///</summary>

<br>///<paramname="v1"></param>

<br>///<paramname="v2"></param>

<br>///<paramname="num"></param>

<br>///<paramname="total"></param>

<br>///<returns></returns>

<br>publicdelegatelongAddMethod(longv1,longv2,intnum,intcout);

<br>
/**////<summary>

<br>///

<br>///</summary>

<br>///<paramname="addMethod"></param>

<br>///<paramname="cout"></param>

<br>staticvoidPrint(AddMethodmethod,intcout)

<br>{

<br>Console.WriteLine(method(0,1,2,cout));

<br>}

<br>

<br>staticvoidMain()

<br>{

<br>//求0,1,1,2,3,5,8
<br>.相似的数据行列在第30个地位的数

<br>Print((v1,v2,num,cout)=>

<br>{

<br>Console.Write(v1);

<br>Console.Write(",");

<br>

<br>num++;

<br>if(num==cout)

<br>{

<br>Console.Write(v2);

<br>Console.WriteLine();

<br>returnv1+v2;

<br>}

<br>else

<br>{

<br>//获得以后办法

<br>StackFrameframe=newStackFrame(0);

<br>//递回挪用
return(long)(frame.GetMethod().Invoke(num,newobject[]
<br>{v2,(v1+v2),num,cout}));

<br>}

<br>},30);

<br>Console.Read();

<br>}

<br>}
我们的代码乐成运转了
<br>,乐成的求出在第30个地位的数值是:514229

当时,.NET里另有一个东东能够便利的失掉以后挪用办法的援用,这东东就是MethodBase,其有一个静态办法GetCurrentMethod可间接猎取以后实行的办法援用,以是我们能够将下面的StackFrame处的两句代码改成以下:

<br>//递回挪用
return(long)(MethodBase.GetCurrentMethod().Invoke(num,newobject[]
<br>{v2,(v1+v2),num,cout}));
来自:http://www.ckuyun.com/kingthy/archive/2008/04/20/1162248.html

实行后的了局都是一样的
<br>(纷歧样才怪了Orz)效率会有不少的变化。而实际上net网页编程是基于堆栈机器来设计,这和我们常见的基于寄存器的本地机器是差异比较大的。总体来说,这是一种虚拟机的设计思路。

金色的骷髅 发表于 2015-1-21 08:32:32

HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了.

小妖女 发表于 2015-1-30 12:35:51

通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。

兰色精灵 发表于 2015-2-2 22:31:06

由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。

分手快乐 发表于 2015-2-8 15:52:19

使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。

简单生活 发表于 2015-2-25 20:01:01

使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。

愤怒的大鸟 发表于 2015-3-4 12:57:32

可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。

深爱那片海 发表于 2015-3-5 00:06:41

代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。

柔情似水 发表于 2015-3-11 04:04:32

目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案.

蒙在股里 发表于 2015-3-17 20:08:17

可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。

第二个灵魂 发表于 2015-3-24 23:18:33

逐步缩小出错代码段的范围,最终确定错误代码的位置。
页: [1]
查看完整版本: ASP.NET网页编程之在Lambda表达式中举行递回挪用仓酷云