ASP.NET网络编程学习第一步:清晰概念
在开始文章之前,先讲一些闲言。之所以学习.net网页,主要是因为自己喜欢制作网页的过程,并且享受用html代码来完成突如其来的idea的过程,但是完成了网页别人不能使用也是一种遗憾,所以就得靠其他知识了,其中就包括使用.net进行网页制作。需要说明的是,我是一个初学者,在弄清楚这部分知识之后,将自己对于这部分知识的理解以及学习过程中遇到的问题写下来,供大家参考。必不可免,自己会有一些学习上的错误,如果读者在参考过程中发现这些错误,欢迎指正。
第一步的学习,必须清晰相关概念。
首先,传输相关概念的解读。相对而言,网站与网页比较容易理解,网站是指网页的集合,可以方便地对网页进行管理。网页是用html等工具制作的用于展示特定内容的文档,其可分为静态页和动态页。静态页内容是预先确定的,并存储在web服务器或者本地计算机/服务器之上。动态网页,是取决于由用户提供的参数,并根据存储在中的网站上的数据中创建的页面。通俗地讲,静态页是照片,每个人看都是一样的,而动态页则是镜子,不同的人(不同的参数)看都不相同。
本地客户端或本地均是指用户(也就是我们)正在使用的电脑上的浏览器,比如ie、firefox、google等;web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等web客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个web服务器是apache、nginx、iis。(web服务器概念是我从百度百科上粘贴过来的,概念中的web客户端指的是上文所说的本地客户端或本地浏览器)简单来说,用户访问一个网页的过程如下图所示:
图中的文档一般是指网页,所以我们在完成一个页面(比如说index.html)之后,为了让其他人可以浏览,必须将其上传至特定web服务器。其他用户通过使用浏览器,向服务器发出web请求,服务器找到index.html文件,然后将其发送到用户的浏览器,浏览器通过解释html代码,将整个页面呈现出来。而我们使用网页编辑工具,比如sublime text或者dreamweaver编辑好页面之后,直接在本地浏览器上观看的过程和上述过程没有任何联系,初学者需要注意。
读到这里,应该比较清楚知道web服务器的作用了。web服务器是一段程序,在客户端请求之后为客户端提供文档或其他数据文件。这种简单解释对于之后理解apache和iis会有帮助。
之前所说,三个主流web服务器分别是apache、iis和nginx,nginx适用于linux和unix,故此本文将不介绍。iis支持asp语言环境,本文将重点介绍iis,并对apache和iis进行比较。
iis(internet informationserver,互联网信息服务)是微软公司的web服务器,其是一种web(网页)服务,其中包括web服务器、ftp服务器、nntp服务器和smtp服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。
apache和iis比较:
如果是基于linux平台的话,那不必多说自然是apache了,因为iis只能在windows环境下运行,而linux+apache的整体性能、安全性、通用性也都强于windows 2003+iis 6.0,不过如果在windows 2003的服务器上,iis 6.0和apache 2.2.6到底哪个性能最好呢?有大神做过测试,如果一个网站的大部分页面都是静态页面,那么apache和iis两者性能基本相同。而如果动态页面居多,那如果都在windows 2003服务器上,微软iis比apache性能好,但是apache比较稳定,而iis有时假死。对于其功能的详细说明和比较,本文将不再赘述,有兴趣的读者可以参考“一梦三四年”的博客:“web服务器之iis,apache,tomcat三者之间的比较”,地址为:.
iis配置:
对于iis的配置过程,网上教程很多,本文不在赘述。我的电脑是windows8.1,64位操作系统,参考网址如下:.
在配置完成之后,在浏览器输入栏中输入:192.168.191.1:81(本机ip+端口,端口默认为80,此处我将其设计为81,对测试结果不影响),就可以预览之前完成的页面。此时,用另一台电脑,ip任意,都可访问该网页。(注意:必须关闭配置电脑的防火墙,其他电脑才可访问)这个时候,如果用配置电脑中的浏览器直接访问,那么配置电脑既是web服务器,也是客户端;如果用其他电脑访问,那么其他电脑是客户端,配置电脑是服务器。
以上就是简单的访问web服务器的过程。在这,推荐一部非常详细的关于访问web服务器的过程的文章,文章中专业术语较多。
其次,是对代码相关概念的解读。这些概念包括:html代码、js代码、html控件、html服务器控件、web服务器控件以及他们的区别。
1、html代码:
html是指超文本标记语言,是构成网页文档的主要语言。html的结构包括头部(head)、主体(body)两大部分,它是一种描述性文本,由html命令组成,用来说明文本、图形、动画、视频等在网页上如何显示。需要说明的是,html代码需要浏览器来解读才能将内容显示给用户。
2、js代码:
js即javascript,javascript是一种由netscape的livescript发展而来的脚本语言,主要目的是为了解决服务器终端语言,比如perl,遗留的速度问题。当时服务端需要对数据进行验证,由于网络速度相当缓慢,只有28.8kbps,验证步骤浪费的时间太多。于是netscape的浏览器navigator加入了javascript,提供了数据验证的基本功能。(参考百度百科)
html代码和js代码的区别:
不同点:扩展名不同、运行环境不同(html:浏览器、js:js解释器)
相同点:都是客户端代码
3、html控件、html服务器控件以及web服务器控件及区别:
html控件和html服务器控件主要区别在于:html服务器控件多了runat=”server”属性;
html控件运行在客户端,html服务器控件运行在服务器端;当asp.net 网页执行时,会检查标注有无runat 属性,如果标注没有设定,那么html标注就会被视为字符串,并被送到字符串流等待送到客户端,客户端的浏览器会对其进行解释;如果html标注有设定runat="server" 属性,page 对象会将该控件放入控制器,服务器端的代码就能对其进行控制,等到控制执行完毕后再将html服务器控件的执行结果转换成html标注,然后当成字符串流发送到客户端进行解释。
asp.net服务器控件和html服务器控件不同点主要在于事件处理模型不同。html标注和html服务器控件的事件处理都是在客户端的页面上,而asp.net服务器控件则是在服务器上,举例来说:
< input id="button4" type="button" value="button"runat="server"/>
是html服务器控件,此时我们点击此按钮,页面不会回传到服务器端,原因是我们没有为其定义鼠标点击事件。
我们为html服务器控件添加了一个onserverclick事件,点击此按钮页面会发回服务器端,并执行test(object sender, eventargs e)方法。
是asp.net服务器控件,并且我们没有为其定义click,但是我们点击时,页面也会发回到服务器端。
4、服务器代码和客户端代码的区别:
客户端代码是指运行在客户端浏览器中的代码,如html静态网页文件中的javascript或vbscript脚本代码,使用时要用<scriptlanguage=javascript> 和</script>将代码括起来,当用户访问到服务器上的这种文件时,服务器会将文件找到后直接发到客户端,客户在浏览器中就可以看到这种文件的结果.
如:
<scriptlanguage=javascript> document.write("这是用客户端脚本代码完成的") </script>
服务器端代码是指运行在服务器上的文件中的代码,如动态网页文件,也可以是javascript或vbscript脚本代码,但是代码要用<script language=javascript runat=server> 和</script>,或者用将代码括起来,当用户访问这种文件时,服务器找到后会先在服务器上运行该文件,并将运行的结果动态地生成html文件,再发送到客户端,用户在浏览中就能看到它的运行结果了.