首页 > 编程 > .NET > 正文

动态网页原理/.net面面观

2024-07-10 13:12:44
字体:
来源:转载
供稿:网友
一、        序言
    不知从什么地方开始才好,所以还是以闲聊作为开场。

首先很高兴得到大家的支持,更高兴可以遇到这么多志同道合的朋友,愿我们可以共同学习,共同进步。正所谓学无先后,达者为师,在讲解的过程之中,如有错漏之处,还请指正。

其次,恭喜你选择web应用开发,成为一名web应用开发工人,看“工人”一说,我们都不是合格的程序员,勉强算的上一名it产业工人。

程序员也有等级,工人、工匠与大师。工人就是这条流水线上最原始的代码复制者,不知疲倦的复制与组合代码。工匠已经提升了一个等级,编程是一种艺术,工匠已经可以操纵这种艺术,他们可以让程序更精练,更维美。大师站在顶端,他们是创造者,他们了解每一个细节,可以创造规则。

如果编程学习是一座山,工人就站在山脚,工匠站在山腰,大师站在上顶。我自认为刚到山脚,你呢?让我们一起向成为大师努力吧。

最后给出一点建议,不要以为web应用开发很简单,即使是网站开发也不简单。如果只简单的对比winfrom开发(通俗的理解就是软件开发)与web应用开发(通俗的理解就是网站开发),前者需要特别的深度,无论erp,还是游戏开发都好,都需要对技术很深的掌握。后者需要特别的广度,web由各种技术综合而成,如果只是简单的掌握某种编程语言或方法,是肯定不行,只有多种技术相结合才能为用户提供更好的用户体验。

闲话不多说,我们现在就开始。

二、        从html说起
1.        html的起源
首先从印刷术说起,自从印刷术发明,一些作家就会在手稿上做一些注释以便指导印刷
工人进行排版,尤其以法国大革命时期的巴尔扎克为甚,他的文稿经常圈涂更改写满注释,所以只有特定的印刷工人才会明白他所做的标记,不得以他值得付更多报酬给印刷工人,以免遭遇罢工(以前当当买书,被送了104册儿童版名人传记,就记住了,汗)。这样的注释就称为标记,它是一种特别的约定。sgml(standard generalized markup language,标准同用标记语言)就是这样的标记语言。
   
    计算机显示与印刷行业的排版有类同之处,都是储存信息,传递信息,排列显示,所以1989年3月,在欧洲粒子物理研究所,即cern,tim berners-lee提出一项计划,目的是使科学家们能很容易地翻阅同行们的文章。此项计划的后期目标是使科学家们能在服务器上创建新的文档。为了支持此计划,tim创建了一种新的语言来传输和呈现超文本文档。这种语言就是超文本标注语言html(hyper text markup language)。
html是sgml语言的具体应用,比sgml更为简单,它是以对称结构化的笔记为“注释”以告知意义,这样就形成了我们所见到的网页,而排版工人就是计算机。所以我们所见到网页主体就是由html标记和他所包含的内容组成,执行者与解释者就是浏览器这个软件程序。

2.        客户端与服务器
    我们这里所说的客户端就是指浏览器,它可以帮助你制作一个请求,并将这个请求发送给另外一台计算机(服务器),服务器里有一个程序就像望夫石,它一直在那里等待,当它发现某个客户端的请求时,他会接受请求,并验证这个请求的合法性,如果合法,他针对以某个程序为基础,对数据进行处理,接着他会将程序中需要返回的信息连同指定的html标记一起返回给客户端,客户端收到返回信息后就会解释、排列、显示;

3.        从html到xml
随着网络的发展,html已经不能满足多数需要,html被不断的修改,从1.0版本到现
现在的4.0版本,但是由于html将显示格式与数据一起存储与传输,它就无法适应更多的需要,例如手机由于种种局限无法解释html中的显示格式,而需要的只有数据,人们于是追本溯源,从新以sgml为基础开发出另一种标记语言即xml 。

    xml并不描述如何显示,它的标记(注释)是用来描述数据信息,包含的是数据,它可以在各设备与各平台中相互传递,因为它是无格式的,当某一程序接收到xml文件时,这个程序会按照被一起传输过来的显示描述文件,对其解释显示,或者根据程序自带描述进行解释显示,或者仅仅将它当作数据接收。可以描述显示的技术有maxl,xlst,css等。

    xml内容远远不止这些,以后还会深入学习;

4.        从html到xhtml
管理html xml标准的组织(w3c)认为html由于其简单化造成它的局限,html必然要
向xml过度,但由于xml虽然数据转换能力强大,完全可以替代html,但面对成千上万已有的站点,直接采用xml还为时过早。所以制定了一种中间过度型语言即xhtml。

    xhtml是the extensible hypertext markup language可扩展标识语言的缩写。目前推荐遵循的是w3c于2000年1月26日推荐xml1.0,是在html4.0的基础上,用xml的规则对其进行扩展得到。

    虽然xhtml看起来比较高层一些,但它可以说是html4.0的升级版本,即4.01,我们在asp.net开发中要接触到的是xhtml1.1 profisnal 标准,它是在html基础上更好的结合css,更严格的定义。

5.        看看javascript
javascript是一种脚本语言,就像html一样被输出至浏览器中,运行于客户端,而不
是运行于服务器端,它对网站开发起到一些补充作用,可以于浏览器中运行,既在页面浏览者的计算机上(准确的说是浏览器里)执行一些简单操作,例如检查验证、控制浏览器中某单元的显示等。

    微软在ie浏览器中内置一个程序模块-xmlrequesthttp,它可以被javascrit调用,并进行后台处理,而不必改变浏览器中显示,这样就可以利用它与javascript结合隐藏处理与服务器端相互通讯,而不必改变页面显示,实现数据、表单提交,而整体页面不会被提交至服务器,页面不会被刷新,这就是最近热火的ajax开发技术。

    javascript 并不难,复杂程度有限,对于简单开发掌握4-10条语句即可,所以不必担心。

6.        关于以上
以上5点我们称为客户端技术,也就是被浏览器接收,解释,执行,显示。虽然客户端
技术还有很多,以上是最为关键,也是我们教程中需要用到的技术。这些技术又被称为静态技术,他们的元素是构成网页显示层面的要素,所以我们接收到的都是这些静态要素,都是可以被浏览器读懂并解释的。而我们接收到的这些静态要素是由服务器传递过来的,服务器通过执行、解释某个程序,并最终讲运行结果与原有动态页面中的html,一起制成静态格式文件传递给客户端,客户端接收,解释并显示。

三、        数据库(不要结合上面看)
    有一批水果,各种类型都有,想储存起来,怎么放才好?
    杂乱的一堆,如果想从里面把苹果全部找出来,岂不是很耗力?
    如果仓库有一个柜子,柜子上有很多盒子,盒子上都唯一的编号,一个盒子存一种水果,这样找出苹果就方便了,只要找到那个对应编号的盒子就行了。

    信息也是这样,要把他们分门别类的村入数据库中的每个表中,查找起来才有效率。一个数据库可以有多张表,一张表里可以有多个字段,一个字段存储一条信息,这样在数据表中就形成行与列,一行代表一整条新数据,比如某个苹果的大小,重量,颜色都在这行对应的列里(字段),下一行是另一个苹果。

    如果你想给每个苹果特征都记下来,只要把这个苹果的特征对应的记录到一行里对应字段里就可以了,下一行写见的就是另一个苹果,这就是数据库的写入。

    如果你想看到所有苹果的特征,很简单,用程序读出来,然后写进html文件里,这就是数据库的读出,需要一条一条的读出吗?不需要,程序是可以自己循环的读的,读完一条他会自动读下一条,一直读到没有(判断没有了的条件),那循环又怎么显示呢,首先你要把html标记是一行的标记一起放入循环结构里,这样在向页面输出的数据的时候,就自动把行结构循环了,就是告诉html,加一个行,加完再加,一直到不能加了就不加了,那怎么把表了每个字段信息读出来呢,好象你在地里挖土豆,你买了把铁锹,土豆长的成行成排的,每行的的每一个土豆边上放的都是那把铁锹(科幻),从左边起,然后右边,换到下一行就成循环了。呵呵

     还有就是数据库删除了,比如某个苹果烂了,你想把这个苹果的信息删除了,幸好你知道这个苹果编号,只要告诉程序这个苹果编号,然后执行什么样处理就可以删除了。

     最后就是数据库更新了,某个苹果突然变胖了,你得更改记录他的体重,你把这个苹果编号给程序再告诉他体重改成多少斤就可以了。

    幸好我们有数据库软件,只要打开数据库软件,在里面建好数据库,再在数据里建好表,再在网站程序里写上几行代码就可以与数据库软件建立相互通讯了。

    这里我们用mmsql 2000 server这个软件,不管是用哪个数据库软件,他接受的查询语言都是一样的,都是tsql97数据库查询语言,不多,几个定义而已,不管是读出,写入,还是删除 更新都好,我们只要在网站页面里把对应语句传输给数据库系统,数据库系统就会自动执行,并那执行的结果返回给我们的程序,这样我们控制这些显示这些数据就得到最终结果了。

    后面会对数据库进行讲解,以及各种方法讲解;

四、        动态网站原理
1.        动态网站一般原理
动态网站一般是由浏览器发送请求给服务器,服务器接收到请求后根据请求进行处理,
最后将处理结果返回给客户端显示。
2.        客户端一般通用请求
不管是在asp、php、asp.net、jsp里都存在以下的请求方法:
a.        表单提交
    表单是html(我用html类称xhtml等,下同)中的一个标记,没有显示意义,相当于一个容器,当这个表单中的某个按钮,发生点击事件后,浏览器首先检测到这个事件,接着它会寻找这个按钮所在的表单中所有可以向服务器传送数据的元素,记录这些数据的标记,数值,然后发送给服务器上指定处理页面,这个指定处理页面是在表单的 action 属性指定
<fron asction=”xxxx.aspx” mothed=”post”></from>
    例如论坛中的发表文章,在文本框输入信息后按提交,浏览器会将这个文本框信息传递给服务器
mothed代表表单提交方法   
b.        地址定位
    地址定位一般是不传递参数,或者将参数作为地址的一部分传递给服务器端。
    比如一个产品页 的,应用的是html ,xhtml,dhtml等传统页面技术,遵循http协议,客户端于服务器端没有过多的交互。
b.异步开发方式
遵循ajax异步技术的开始方式,基于浏览器,基于,应用的是html ,xhtml,dhtml传统页面技术,异步交互数据。
c.富客户端开发方式 ria ui
例如flash的flex技术,.net的expression技术,这应是未来的主流,这种技术是将界面与业务及数据逻辑层分离,将页面状态大量前移至客户端,web服务器端重新组织资源,形成web service集合。

具体的解释是这种开发方式脱离传统的html,xhtml,dhtml等页面技术,客户端与服务器端以xml做为通讯方式,大量页面ui信息(maxl,mxml)加载到客户端承载保存,服务器端实现真正web service集合;

按照flex的做法是将在浏览器里做一个缓存容器,异步加载执行,实现更丰富的功能体验,微软在很久之前就公布将ie6.0作为ie的最后版本(ie7.0是因为他的计划推迟,网络产生变化,不得以变更)可能就是基于这个考虑
c.        胖客户端
富客户端只能说是功能体验较多,胖客户端就是肥了,胖客户端已经完全脱离浏览器,
脱离了传统页面方式,是b/s与c/s开发的的综合,如果上一种可以称为bc/s的话,后一种就是cb/s,c在前。
    具体的开发方式就是自定义客户端让用户的下载以实现更丰富的功能,以web的方式进行通讯,如果无法理解,不妨想下网络游戏,将全屏改成非全屏,将游戏界面改成现在的网络界面,其实这还不足以说明。现在你明白了web应用开发≠网站开发了吗?

    现在处于一个技术变革的时代,如果你不能确定以后你时候会转行,一定会继续做程序员,你就要把把你的身家性命押宝你对新一代(也可以说是这一代)web技术和体系的理解上,从中选择一种,不要追逐web2.0这样概念,真正的革新已经开始。

    3.小论c/s开发方式
    有句话是这么说来着的,一切都是为了web,it成就web,web吞噬it。
    b/s越来越热火,但不代表c/s就要趋与平淡,在基础领域c/s无可替代,甚至c语言这么多年依然坚挺,曾经十分厌恶c,憎恨潭浩强误人子弟,现在回过头来c语言是如此的帅,自由透明。还有c++
    为什么不论vb,vb已经无药可救了,微软老大发话一年内vista时常占有60%,谁敢再碰vb,那么多面向对象编程语言,为什么还要选vb,vb.net不过只保留了型。升级可以,没问题?纯属做梦。
    为什么不论java,java不错,但搞java的人都搞企业级开发去了,偶尔来点j2me,嵌入开发大佬,离c/s太远了。
    daphi,daphi在嵌入与自动化控制方面市场占有强悍啊(尤其是大连这种重工企业多的地方),不知道为什么。
    看看.net的各种语言,c/s还是等普及了vista再说。

    基础领域就c与c++在挺着,其他走的越来越靠近b/s。
    b/s与c/s界限的模糊是普通应用领域的必然趋势,所以不要说做网站没前途啊,是还没发现前途。

    4.小论vista的影响
    vista推迟两年多才发布,要是04年6月发布估计网络就不是现在这个样子了,起码我们现在早进入64位计算时代,大把大把的程序员要失业先。我们的上网行为方式估计也不是现在这个样子。
    现在发布vista有什么影响,首先对最近还在买32位时代的电脑的人说,等死吧。其次,对主板不支持64位的人说,你们没希望了。
    然后对vb程序员说,你们已经被时代抛弃,对还在依赖com+的程序员及mfc程序员说,还好,但是努力转。对asp开发者说,前途不会再光明。对php 开发者说,再看一两年,看看还有没有希望,说不定。对phython开发者说,祝贺你,你已经跟着微软老大混了。对ruby开发者说,提前祝贺你,你即将跟着微软老大混。对c与c++开发者说, 王道还是!对java开发者说,咱不管,也管不着。

  完毕!
  顺便补充vista 6版中5版基于64位,vista的核心是.net framework3.0,另外它以前的叫法叫做winfx,看起来是不是很像win32啊,像就对了。还有wwf,wcf,wpf可是些新词汇哦!


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表