ASP.NET教程之使用AJAX和ASP.NET完成复杂谈天室
我实在想不明白java的机制,为什么非要那么蛋疼,在同一个平台下重复编译。 先容我的第一个复杂的Chatroom是用ASP3.0写成的。那无外乎有二个TextBox,他们发送动静给程序变量然后显现在一个每秒革新的页面上。在谁人时期,一个真实的谈天室必需使用JavaApplet或ActiveXcontrol。不外这统统都在Ajax到来以后改动了。AJAX是一个分离了XML和javascript的异步通讯机制。如今我们能够只用服务器代码和一点JavaScript。这篇文章就是先容怎样用AJAX手艺来构建一个复杂的谈天室。
示例程序
示例程序是一个单一的多用户谈天室。其外部保护着一个已登任命户的列表。列表将消灭session过时的用户。同时它还撑持一些命令好比/adminClear扫除谈天室/nick改动用户姓名。
你还必要晓得
这个程序利用一个类叫做ChatEngine。这个类把持了全体的用户和动静。用户被贮存在一个Hashtable里,而动静贮存在StringCollection里:
Hashtableusers;StringCollectionchat;
一个ChatEngine的全局实例被安排在Global.asax.cs:
publicstaticUChat.ChatEngine.IChatEngineEngine=newUChat.ChatEngine.ChatEngine();
一个JavaScript函数用来异步的将全局变量内的数据显现在页面上:
functionsetTimers(){timeID=window.setTimeout("updateAll()",refreshRate);}
使用每一个用户供应的称号和ID来标识用户:
publicvoidAddUser(stringid,stringuser){//makesureusernamedoesnotexistalreadyif(!UserExists(user)){//addusertouserslistusers.Add(id,user);//displayanotificationmessagetoalluserschat.Add(this.MakeServerMessage(string.Format(joinedfmt,user)));}}
截图和完成步骤
主页显现了谈天室的基础信息,好比有几人在谈天室、ChatLog的巨细。
为了可以登录谈天室,必需供应一个称号。
当Login按钮被单击。上面的代码就会被实行:
protectedvoidLogin(objectsender,EventArgse){stringuser=txtUsername.Text;if(!ValidateNick(user))return;if(Global.Engine.UserExists(user)){lblErrorMsg.Text="Auserwiththis"+"namealreadyexists,tryagain."return;}Response.Redirect("Server.aspx?action=Login&u="+user);}
举行一些考证今后,用户会被转向到另外一个页面,这个页面会使用AddUser函数将用户放进用户列表。当这统统都做好了。用户又会被转向到Chat.aspx页面,上面的JavaScript函数将要实行在这个页面上:
<scripttype="text/javascript">sniffBrowserType();//Showsloading..screenshowLoadScreen();//Setthejavascripttimerand//loadsuserlistandmessagessetTimers();setFocus(mytext);</script><inputtype="text"class="mytext"id="mytext">
当用户输出了笔墨,而且按了回车。上面的代码就会被实行:
//CapturetheenterkeyontheinputboxandpostmessagefunctioncaptureReturn(event){if(event.which||event.keyCode){if((event.which==13)||(event.keyCode==13)){postText();returnfalse;}else{returntrue;}}}functionpostText(){rnd++;//Cleartextboxfirstchatbox=getElement("mytext");chat=chatbox.value;chatbox.value=""//getuserGUIDfromurluserid=location.search.substring(1,location.search.length);//constructAjaxServerURLurl=Server.aspx?action=PostMsg&u=+userid+&t=+encodeURIComponent(chat)+&session=+rnd;//Createandsettheinstance//ofappropriateXMLHTTPRequestobjectreq=getAjax();//Updatepagewithnewmessagereq.onreadystatechange=function(){if(req.readyState==4&&req.status==200){updateAll();}}req.open(GET,url,true);req.send(null);}
竣工!就是这些了。没甚么出格的中央,下载示例程序,然后了解这些代码!
如果需要重新编写代码,几乎任何一门计算机语言都可以跨平台了,还用得着Java嘛,而且像PHP/C#等语言不需要修改代码都可以跨Windows/Linux。 如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。 ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。 那么,ASP.Net有哪些改进呢? 在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗? 关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。 PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。 主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。 CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。
页:
[1]