仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 599|回复: 8
打印 上一主题 下一主题

[学习教程] NET网页编程之半途封闭ASP.NET是不是会影响服务器真个实行?

[复制链接]
分手快乐 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:25:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在VC.net的版本上,为了让C++运行在.NETFramework中,微软为C++引进了托管,就是托管C++(ManagedC++),这个根本就没有流行起来,自托管C++产生以后就没有收到过好评。在实行ASP.NET页面过程当中,总不免会呈现如许那样的成绩,对照典范的一个成绩就是当一个ASPX页面实行到一半的时分,扫瞄器封闭了这个页面,那末服务器端对应的这个页面的代码还在实行么?
履历证实,除非你在代码内里做了特别判别,不然代码仍旧正在实行。
注重点:
1、客户端显现页面的时分,背景已实行完了的页面临象早已不存在了。固然这时候候谈不上服务器段实行不实行的成绩了。
2、页面还没有前往,处于守候形态的时分。封闭ASPX页面,才会触及到下面提到的服务器端仍旧在实行的情形。
3、客户端封闭的时分基本不向服务器发送指令。
4、除非你代码内里做了特别判别,这里的特别判别指用
if(!Response.IsClientConnected)
来检测形态而用代码停止运转。
上面的复杂代码就是演示封闭页面后,看是不是仍旧在实行?
你能够在这个页面翻开后,还没有前往任何信息的时分把这个页面封闭,然后看指定目次下是不是有对应文件被创立并填写内容。
protectedvoidPage_Load(objectsender,EventArgse)
{
StringBuildertxt=newStringBuilder();
txt.AppendLine();
txt.AppendLine(DateTime.Now.ToString("u"));
txt.AppendLine("asvd");
Response.Write(DateTime.Now.ToString("u"));
Response.Write("
");
Thread.Sleep(50000);

txt.AppendLine(DateTime.Now.ToString("u"));
Response.Write(DateTime.Now.ToString("u"));
Response.Write("
");
//把一些信息写到别的一个文件,借此观察是不是正在运转
stringdir=Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"logs");
if(!Directory.Exists(dir))
Directory.CreateDirectory(dir);
DateTimedt=DateTime.Now;
stringshortfileName=string.Format("errors_{0:0000}{1:00}{2:00}.log",dt.Year,dt.Month,dt.Day);
stringfileName=Path.Combine(dir,shortfileName);
StreamWritersw;
if(File.Exists(fileName))
sw=File.AppendText(fileName);
else
sw=File.CreateText(fileName);
sw.Write(txt.ToString());
sw.Close();
sw=null;
}
作了特别判别的情形复杂例子:
注重:IsClientConnected的判别在VS.net开辟工具自带的开辟站点ASP.NETDevelopmentServer是不撑持的。ASP.NETDevelopmentServer永久前往true。
IIS才是撑持的。
protectedvoidPage_Load(objectsender,EventArgse)
{
StringBuildertxt=newStringBuilder();
for(inti=0;i<100;i++)
{
if(this.Response.IsClientConnected)
{
txt.AppendLine();
txt.AppendLine(DateTime.Now.ToString("u"));
txt.AppendLine(i.ToString());
Response.Write(DateTime.Now.ToString("u"));
Response.Write("
");
Thread.Sleep(500);
}
else
{
Response.End();
return;
}
}
txt.AppendLine(DateTime.Now.ToString("u"));
Response.Write(DateTime.Now.ToString("u"));
Response.Write("
");
//把一些信息写到别的一个文件,借此观察是不是正在运转
stringdir=Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"logs");
if(!Directory.Exists(dir))
Directory.CreateDirectory(dir);
DateTimedt=DateTime.Now;
stringshortfileName=string.Format("errors_{0:0000}{1:00}{2:00}.log",dt.Year,dt.Month,dt.Day);
stringfileName=Path.Combine(dir,shortfileName);
StreamWritersw;
if(File.Exists(fileName))
sw=File.AppendText(fileName);
else
sw=File.CreateText(fileName);
sw.Write(txt.ToString());
sw.Close();
sw=null;
}
这个例子中是发明中止,就丢弃之前做的任何器材。
固然我们也能够复杂的修正上述代码,让把已处置完成的器材纪录上去,相似上面的代码
protectedvoidPage_Load(objectsender,EventArgse)
{
StringBuildertxt=newStringBuilder();
for(inti=0;i<100;i++)
{
if(this.Response.IsClientConnected)
{
txt.AppendLine();
txt.AppendLine(DateTime.Now.ToString("u"));
txt.Append("**********");
txt.AppendLine(i.ToString());
Response.Write(DateTime.Now.ToString("u"));
Response.Write("
");
Thread.Sleep(500);
}
else
{
break;
}
}
txt.AppendLine(DateTime.Now.ToString("u"));
Response.Write(DateTime.Now.ToString("u"));
Response.Write("
");
//把一些信息写到别的一个文件,借此观察是不是正在运转
stringdir=Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"logs");
if(!Directory.Exists(dir))
Directory.CreateDirectory(dir);
DateTimedt=DateTime.Now;
stringshortfileName=string.Format("errors_{0:0000}{1:00}{2:00}.log",dt.Year,dt.Month,dt.Day);
stringfileName=Path.Combine(dir,shortfileName);
StreamWritersw;
if(File.Exists(fileName))
sw=File.AppendText(fileName);
else
sw=File.CreateText(fileName);
sw.Write(txt.ToString());
sw.Close();
sw=null;
}
必要注重的是,利用isClientConnected是要占用必定的体系资本的。
isClientConnected实践上必要向客户端输入一点器材,然后才晓得客户端是不是仍旧在线。
如许,除非你的使用十分耗时,不然倡议你不要用isClientConnected。以免判别isClientConnected利用的资本比你实践营业逻辑利用的资本还要多。
在任何情形下,Response.IsClientConnected都要有些开支,以是,只要在实行最少要用500毫秒(假如想保持每秒几十页的吞吐量,这是一个很长的工夫了)的操纵前才利用它。作为一般的划定规矩,不要在严密轮回的每次迭代中挪用它,比方当绘制表中的行,大概每20行或每50行挪用一次。
今天去面试,被问到C#中的new关键字,看了那么多的书对new关键字还是有一定认识,回来又把new复习了一遍,发现了许多以前还不知道的细节。
蒙在股里 该用户已被删除
沙发
发表于 2015-1-18 14:27:40 | 只看该作者
asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源
小魔女 该用户已被删除
板凳
发表于 2015-1-24 12:08:48 | 只看该作者
虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。
老尸 该用户已被删除
地板
发表于 2015-2-1 11:09:02 来自手机 | 只看该作者
HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了.
再现理想 该用户已被删除
5#
发表于 2015-2-7 05:01:59 | 只看该作者
是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。
山那边是海 该用户已被删除
6#
发表于 2015-2-20 18:40:54 | 只看该作者
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
再见西城 该用户已被删除
7#
发表于 2015-3-6 18:57:52 | 只看该作者
我的意思是.net好用,从功能上来说比JAVA强还是很明显的。
飘灵儿 该用户已被删除
8#
发表于 2015-3-13 07:09:24 | 只看该作者
ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。
谁可相欹 该用户已被删除
9#
发表于 2015-3-20 16:36:28 | 只看该作者
平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-1-11 06:19

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表