计算机网络课件_第1页
计算机网络课件_第2页
计算机网络课件_第3页
计算机网络课件_第4页
计算机网络课件_第5页
已阅读5页,还剩231页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

指导教师:杨建国计算机网络二零一零年三月第八章网络应用编程(需更新)第一节网络应用编程实例第二节网络编程语言8.1网络聊天程序任务8.1.1任务描述

VB提供了一系列的网络编程控件,利用它们,网络编程将成为一件快乐而简单的工作。VB网络控件主要有三种:(1)Winsok控件主要用于编制基于TCP/IP或UDP协议的网络应用程序。(2)InternetTransfer控件主要以来传输文件,执行FTP命令以及登录服务器等。(3)WebBrowser用于创建浏览器本节先介绍Winsok控件。3

聊天服务程序:由客户端和服务端两个程序组成,采用Winsok控件开发。这两个程序可以在同一台计算机上运行,也可以在网络上不同的计算机上运行。整个系统的运行机制是:第一步:建立连接主要过程是:由客户端程序向服务端程序发出连接请求,服务端程序收到并接受连接请求,至此客户机与服务器创建了数据交流通道。第二步:开始聊天主要过程是:在客户机的“发送的信息”文本框中输入文字时,服务器端的“收到的信息”文本框中就会实时地显示相同的文字,反之亦然。5P215习题一、填空题1.Winsock控件主要用来编制TCP/IP或

协议的通话程序。答案:UDP2.在网络编程中最常用的方案是

。答案:客户机/服务器程序(Client/Server)6P215习题三、问答题2.简述网络聊天程序的运行过程。答:网络聊天程序的运行过程是:第一步:建立连接主要过程是:由客户端程序向服务端程序发出连接请求,服务端程序收到并接受连接请求,至此客户机与服务器创建了数据交流通道。第二步:开始聊天主要过程是:在客户机的“发送的信息”文本框中输入文字时,服务器端的“收到的信息”文本框中就会实时地显示相同的文字,反之亦然。78.1.3服务器程序代码设计PrivateSubForm_Load()'设置侦听端口WinsockServer.LocalPort=10001

'读取服务器的IP地址TxtServerIP.Text=WinsockServer.LocalIP

'开始侦听WinsockServer.ListenEndSubPrivateSubCommand1_Click()'点击“退出”按钮后关闭应用程序UnloadMeEndSub98.1.3服务器程序代码设计PrivateSubCommand2_Click()'只要txtSend文本框的内容写好以后就由WinsockServer控件发送WinsockServer.SendDataTxtSend.TextEndSubPrivateSubWinsockServer_ConnectionRequest(ByValrequestIDAsLong)'当收到连接请求时,Winsock处于侦听状态'此时应该使用Close方法关闭Winsock,然后使用Accept方法接受连接请求WinsockServer.CloseWinsockServer.AcceptrequestIDEndSub108.1.3服务器程序代码设计PrivateSubWinsockServer_DataArrival(ByValBytesTotalAsLong)'当客户端有信息发送来时,利用WinsockServer控件的GatData方法读取数据'并将其显示在txtReceive文本框中DimMyStrAsStringWinsockServer.GetDataMyStrTxtReceive.Text=MyStrEndSub118.1.4.客户机的程序代码设计PrivateSubForm_Load()'设置聊天服务器的侦听端口WinsockClient.RemotePort=10001

'读取本机的IP地址txtClientIP.Text=WinsockClient.LocalIPEndSubPrivateSubCommand1_Click()'点击“退出”按钮后关闭应用程序UnloadMeEndSub138.1.4.客户机的程序代码设计PrivateSubCommand2_Click()'根据txtServerIP文本框中输入的服务器IP,连接聊天服务器WinsockClient.RemoteHost=txtServerIP.TextWinsockClient.ConnectEndSubPrivateSubCommand3_Click()'输入txtSend文本框的内容后由WinsockServer控件发送WinsockClient.SendDatatxtSend.TextEndSub148.1.4.客户机的程序代码设计PrivateSubWinsockClient_Connect()'如果与服务器连接成功,则向用户提供下列信息MsgBox"你成功地与聊天服务器进行了连接",vbInformationEndSubPrivateSubWinsockClient_DataArrival(ByValBytesTotalAsLong)'当服务器有信息发送来时,利用WinsockClient控件的GatData方法读取数据'并将其显示在txtReceive文本框中DimMyStrAsStringWinsockClient.GetDataMyStrtxtReceive.Text=MyStrEndSub158.2Winsock控件及网络应用程序设计基础Winsock控件是建立在TCP协议的基础上,能够完成远程计算机间的通信,用途非常广泛。即使我们对TCP/IP,TCP这些知识不太熟悉,只要理解了网络应用程序设计的一般原理,并对Winsock的主要属性、方法和事件有所了解,也可以在很短时间内创建一个简单的网络通信程序。178.2.1Winsock控件的主要属性Winsock控件主要有八个属性:1.BytesReceived属性:返回接收到的数据。通常用GetData方法来获取这些数据。2.LocalHostName属性:返回本地计算机的名称。3.LocalIP属性:返回本地计算机的IP地址。4.LocalPost属性:返回或者设置所用的端口,如果设置为0,则使用随机端口。5.Protocol属性:返回或设置Winsock所用的协议(TCP或UDP)。6.RemoteHostName属性,返回或设置远程计算机的名称。7.RemoteHostIP属性,返回远程计算机的IP地址。8.State属性:返回Winsock控件的当前状态。18Winsock控件的State属性198.2.2Winsock控件的主要方法Winsock控件的方法主要有六个:1.Listen方法语法:Winsock对象.Listen作用:使服务器处于侦听状态,等待客户访问。2.Connect方法语法:Winsock对象.Connect[远程主机IP,远程端口]作用:用于向远程主机发出连接请求。3.Accept方法语法:Winsock对象.AcceptRequestID作用:用于接受一个连接请求,其中RequestID是客户机发来的请求信号218.2.2Winsock控件的主要方法Winsock控件的方法主要有六个:4.SendData方法语法:Winsock对象.SendData数据作用:用于发送数据5.GetData方法语法:Winsock对象.GetData变量[数据类型[,最大长度]作用:用来获得接收到的数据6.Clcse方法语法:Winsock对象.Close作用:关闭当前连接22P215习题二、填空题5.Winsock1.Listen语句的含义是

。答案:LocalIP使服务器处于侦听状态,等待客户访问。23P214习题一、单项选择题1.一旦数据到达,将首先触发Winsock控件的()。A.DataArrival事件B.ConnectionRequest事件C.DataSand事件D.DataGet事件答案:B25P214习题一、单项选择题2.要发送数据,通常使用Winsock控件的()。A.SendData方法B.Listen方法C.Accept方法D.GetData方法答案:A26P214习题一、单项选择题5.当使用SendData将数据发送到主机后时,将触发的Winsock控件的是()。A.SendProgressB.MouseDownC.ClickD.KeyPress答案:A298.2.4网络应用程序设计基础1.基于Socket的通信过程Winsock控件是基于Socket接口(套接字)创建的。它是现在TCP/IP网络中最通用的API(应用程序接口),也是在Internet上进行应用程序开发最通用的API。WindowsSocket规范已成为Windows网络编程的标准。Socket在计算机中提供了一个通信端口,可以通过这个端口与任何一个也同样具有Socket接口的计算机进行通信。应用程序在网络上传输、接收的信息都通过这个Socket接口来实现。基于Socket的通信过程如下页图所示:30SocketSocket应用程序A发送发送接收接收应用程序B通信细节利用Socket进行网络编程,只需对Socket接口进行数据的读写操作,根本不必关心两台计算机间的通信细节就能够完成数据的发送和接收工作。31SocketSocket应用程序A发送发送接收接收应用程序B通信细节利用Socket进行网络编程,只需对Socket接口进行数据的读写操作,根本不必关心两台计算机间的通信细节就能够完成数据的发送和接收工作。P215习题三问答题1.简述基于Socket的通信过程。322.基于Winsock控件的开发模式VB提供的Winsock控件正是基于Socket规范创建的。利用Winsock控件开发网络通信系统时,通常要涉及到服务器和客户机两类应用程序:(1)服务器程序的开发模式服务器程序必须设置好LocalPort属性,作为侦听端口。该值可设置成任何一个整数,只要其它应用程序没有使用过的值即可,单习惯上应大于1000。使用Listen方法使服务器进入侦听状态,等待客户机的连接请求。332.基于Winsock控件的开发模式(1)服务器程序的开发模式客户机程序发出连接请求后,将触发服务器程序的ConnectionRequest事件,该事件得到一个参数RequestID。服务器程序使用Accept方法接受客户机程序的RequestID请求。至此,服务器程序就可以使用SendData方法向客户机发送数据了。当服务器接收到数据时,会产生DataArrival事件。在该事件中可使用GetData方法接收数据。34(2)客户机程序的开发模式

●首先设置好RemoteHost属性,用来指向运行服务器程序的远程计算机的的主机名或IP地址。

●设置RemotePort属性,用来指向服务器程序的侦听端口号。

●使用Connect方法向服务器提出连接请求。

●如果服务器接受了上述请求,客户机程序就会产生Connect事件,可以根据需要,在此事件中编写程序,比如使用MsgBox函数向用户提示“连接已成功”之类的信息。

●连接成功后,就可以根据需要使用SendData方法向服务器发送数据了。

●当客户机程序接收的数据时,就会产生DataArrival事件,可以用GetData方法接收数据。35P215习题三、问答题3.简述基于Winsock控件的开发过程。答:1)服务器程序的开发模式服务器程序必须设置好LocalPort属性,作为侦听端口。使用Listen方法使服务器进入侦听状态,等待客户机的连接请求。客户机程序发出连接请求后,将触发服务器程序的ConnectionRequest事件,该事件得到一个参数RequestID。服务器程序使用Accept方法接受客户机程序的RequestID请求。至此,服务器程序就可以使用SendData方法向客户机发送数据了。当服务器接收到数据时,会产生DataArrival事件。在该事件中可使用GetData方法接收数据。36P215习题三、问答题3.简述基于Winsock控件的开发过程。2)客户机程序的开发模式首先设置好RemoteHost属性,用来指向运行服务器程序的远程计算机的的主机名或IP地址。设置RemotePort属性,用来指向服务器程序的侦听端口号。使用Connect方法向服务器提出连接请求。如果服务器接受了上述请求,客户机程序就会产生Connect事件。连接成功后,就可以根据需要使用SendData方法向服务器发送数据了。当客户机程序接收的数据时,就会产生DataArrival事件,可以用GetData方法接收数据。378.3其它网络应用程序设计8.3.1局域网中保证联网计算机时间同步当采用客户机/服务器模式在局域网上开发系统时,必须保证所有计算机的时钟时间一致。在就需要用到统一的时间,以便协调工作,最号的方法就是通过程序的方法,解决时钟同步的问题。38数据服务器MyServer应用程序1应用程序2应用程序n……这是某一应用系统的网络拓补结构,我们可以采用Winsock控件解决众多客户机与数据服务器间的时间同步问题。39解决时钟同步的基本思路是:首先精确调整服务器的时钟,然后,当客户机启动时与服务器连接,并与服务器“对时”。这样,每当执行应用程序时,客户机就会与服务器时钟同步了。404.如何保证局域网中联网的计算机同步运行?答:解决时钟同步的基本思路是:首先精确调整服务器的时钟,然后,当客户机启动时与服务器连接,并与服务器“对时”。这样,每当执行应用程序时,客户机就会与服务器时钟同步了。P215习题三、问答题

411.客户机程序的主要代码(1)与服务器建立连接在客户机主窗体的Load事件中连接服务器程序,具体方法与聊天程序相同。PrivateSubForm_Load()'设置聊天服务器的侦听端口WinsockClient.RemotePort=10001'读取本机的IP地址txtClientIP.Text=WinsockClient.LocalIP'根据txtServerIP文本框中输入的服务器IP,连接聊天服务器WinsockClient.RemoteHost=txtServerIP.TextWinsockClient.Connect'如果与服务器连接成功,则向用户提供下列信息MsgBox"你成功地与聊天服务器进行了连接",EndSub42(2)其它代码PrivateSubWinsockClient_DataArrival(ByValbytesTotal)’当收到服务器发来的数据时,完成以下工作:’(1)日期数据类型接收数据;’(2)设置本机的系统日期’定义一个日期类型数据变量DimMyDateAsDate

’以日期数据类型接受服务器日期数据WinsockClient.GetDataMyDate,VbDate

’使本机的系统日期等于服务器日期Date=MyDateEndSub432.服务端程序主要代码PrivateSubWinsockServer_ConnectionRequest_(ByValRequestIDAsLong)’当收到客户机的连接请求时,完成以下工作:’(1)结束Winsock的侦听状态;’(2)接受连接请求;’(3)将服务器的系统日期发送给客户机WinsockServer.CloseWinsockServer.AcceptRequestID

’将系统当前的时间Date发送给提出请求的客户机WinsockServer.SendDateEndSub448.3.2Web浏览器1.一个简单的浏览器应用程序示例(1)创建一个新的“标准EXE”工程。利用“工程”菜单的“部件”选项添加“WindowsInternetControls”以获得对WebBrowser控件的支持。(2)在Form1窗口上添加Text1、Command1和WebBrowser1等控件。(3)在Command1控件的Click事件中,添加如下代码:PrivateSubCommand1_Click()’连接要浏览的网站地址WebBrowser1.NavigateText1.TextEndSub(4)运行程序。在Text1输入网址后,单击Command1连接按钮,即可进入有关网页。(演示)452.一个较完整的浏览器应用程序一个真正的浏览器(比如IE)至少需要后退(Back)、前进(Forword)、停止(Stop)、刷新(Refresh)、主页(Home)和搜索(Search)等功能按钮,还能够显示当前网页的下载速度。要完成这些工作,就必须深入学习WebBrowser控件的有关知识。46(1)LocationURL和LocationName属性LocationURL属性返回装入网页的地址,LocationName属性则返回当前装入网页的标题。它们均是只读的,不能通过VB程序改变其值。(2)ProgressChange事件下载网页通常会花费一定的时间,可利用ProgressChange事件了提醒用户当前下载的进度。只要网页正在下载,改事件就会被周期性地触发。可将该事件与Progress控件结合使用,实现下载进度条提示效果。(3)停止网页下载的方法当用户觉得下载一个网页花费的时间太长而想终止下载时,可使用Stop方法。47(4)后退与前进的方法如果要实现大多数浏览器所具有的后退与前进功能,则可以使用GoBack,GoForword方法。这两个方法的基本原理是:对Windows目录下的History文件夹进行搜索,重新调出已查看过的HTMT页面缓存,从而完成后退与前进的功能。但如果要得到当前网页的最新内容,则要使用Refresh方法进行刷新。此外,如果想要在自己的浏览器程序中加入主页,搜索等功能,则可以使用GoHome,GoSearch方法。(5)DownLoadBegin和DownLoadComplete事件当网页下载工作开始和结束时,分别触发这两个事件。这两个事件通常与ProgressChange事件结合使用,起到提示用户的作用。48演示程序“Web浏览器”49

网络编程技术2023/2/6徐敏

User:xuminPassword:23250参考书籍WindowsSockets网络程序设计大全清华大学出版社蒋东兴等编著Windows网络编程技术机械工业出版社AnthonyJones/JimOhlundMicrosoftPressVisualc++网络通信程序开发指南机械工业出版社郎锐罗发根编著51课程简介

网络编程是指利用网络编程接口来编写在网络上交换信息的应用程序。本课程主要讲授带有共性的网络编程的原理和方法,并在windows下对网络程序设计的各种方法进行实践。52第一章绪论531-1概述

计算机网络程序设计就是利用网络应用编程接口编写网络应用程序,实现网络应用进程间的信息交互功能。应用进程间的通信可以分为两种:同一系统上的应用进程间的通信(IPC)实现方法:文件、管道、消息队列、共享存储段和信号灯不同系统上的进程间的通信计算机网络程序设计就是利用网络应用编程接口编写网络应用程序,实现网络应用进程间的信息交互功能。学习网络编程,必须具备操作系统、计算机网络、以及编程语言基础。541.2网络服务

应用层传输层网络层数据链路层55应用程序访问TCP/IP协议提供的服务来实现网络上进程间的通信。网络应用编程的目的是如何利用各协议层所提供的功能实现用户的应用.通过应用编程接口访问某一协议层提供的服务,事实上还需要间接用到其下各层提供的服务。56571-2-1传输层服务传输层的任务是根据下面通信子网的特性最佳地利用网络资源,并以可靠和经济的方式为两端主机上的进程之间透明地传送报文。TCP/IP协议栈中的两个最主要的传输层协议是TCP和UDP。TCP提供可靠的、有序的、端到端的数据传输服务。UDP则提供的是不可靠的、不保证有序到达的、端到端的数据传输服务。581-2-2数据链路层服务数据链路层负责在两个相邻结点间的链路上,无差错地传送以帧为单位的数据。数据链路层要负责建立、维护和释放数据链路的连接。在传送数据时,若接收结点检测到数据有差错,就要通知发方重发这一帧,直到这一帧正确到达接收结点为止。591-3网络应用编程接口网络应用编程接口(API)是网络应用程序访问网络协议提供的服务的桥梁。流行的网络应用编程接口Berkeley插口APIBerkeley插口是在1983年由4.2BSDUnix引入的网络编程接口WindowsSocketsWinSock是以Berkeley插口API为范例定义的一套MicrosoftWindows下的网络编程接口60可视化编程环境下的网络控件在VC、VB、Delphi、PowerBuilder等可视化编程工具中,大部分网络编程都是通过网络控件来进行的其它网络编程接口远程过程调用(RPC)是由本地系统上的进程激活远程系统上的进程,由远程过程完成某项任务后将结果返回给本地进程。611-4网络编程模式网络编程模式一般采用客户-服务器模式;大多数应用系统由两部分组成:客户(client)和服务器(Server);客户和服务器的通信关系一旦建立,它们就可以相互接收和发送消息;根据实现方式的不同,服务器分为串行服务器和并发服务器;并发服务器又可分为预先创建服务子进程并发服务器预先创建服务线程并发服务器按需创建服务子进程并发服务器按需创建服务线程并发服务器621-5网络编程要考虑的问题 网络程序设计因为涉及到不同平台之间的信息交互,它比单机上的程序设计要复杂很多,以下问题需要注意:并发环境下的网络编程异构环境下的网络编程阻塞与非阻塞通信服务类型的选择631-5-1并发环境下的网络编程在多进程或多线程应用中,涉及到资源共享、进程或线程间的同步,因而更复杂。在多进程或多线程应用中,使用的系统调用或函数必须是可重入的。(所谓可重入函数是指一个可以被多个任务调用的过程,任务在调用时不必担心数据是否会出错。)对于不可重入的调用或函数,系统如果没有提供多线程安全的版本,程序员需要避免使用或自己编写相应的函数。641-5-2异构环境下的网络编程 网络通信常常是在不同的操作系统之间运行,所以网络应用程序必须考虑不同的OS之间的差异,尤其是不同OS上的数据格式的差异。字节顺序大数在前的字节顺序:指将一个多字节数的高序字节存储在内存的起始地址小数在前的字节顺序:指将一个多字节数的低序字节存储在内存的起始地址字的长度不同的OS对于相同的数据类型可能有不同的表示长度。字节边界问题不同的OS对相同的数据类型打包方式不相同,因为它们的定界限制不一样。65例如:结构struct{chara;intb}解决方法方法一:对于具有相同字节顺序的OS,通信双方均以单字节定界;对于具有不同字节顺序的OS,显示地定义格式(位数、字节顺序类型)方法二:将需要发送的消息的结构在发送前变换成一种统一的格式,到达接收方后再执行相反的过程。661-5-3阻塞与非阻塞通信阻塞模式通信:利用TCP协议发送一个报文时,如果低层协议没有可用空间来存放用户数据,则应用进程将阻塞等待直到协议有可用的空间;在应用进程调用接收函数接收报文时,若没有到达的数据,则调用将一直阻塞直到有数据到达或出错;对于面向连接的协议,如果没有连接请求到达,则等待连接调用将阻塞直到有连接请求到达;67非阻塞模式通信利用TCP协议发送一个报文时,如果低层协议没有可用空间来存放用户数据,调用将直接返回而不需等待;在应用进程调用接收函数接收报文时,若没有到达的数据,则调用将直接返回而不需等待;对于面向连接的协议,如果没有连接请求到达,等待连接调用将直接返回;68两种通信方式的优缺点在非阻塞模式下,应用程序不断地轮询查看是否有数据到达或有连接请求到达。这种轮询方式比其他的技术耗费更多的CPU时间,因而要尽量避免使用,可以采用多路复用技术来解决这一问题阻塞模式的缺点是进程或线程在执行I/O操作时将被阻塞而不能执行其它的工作,所以在单进程或单线程应用中不能使用这种模式,在多线程应用中比较适合采用阻塞模式,一个线程被阻塞不影响其它线程的工作691-5-4服务类型的选择从通信的角度看,网络协议栈中的各层所提供的服务可以分为两大类:面向连接服务与无连接服务面向连接服务:所谓连接,就是两个对等实体为进行数据通信而进行的一种结合。在数据交换之前,必须先建立连接;当数据交换结束后,而应终止这个连接;面向连接服务过程分为三个阶段:连接建立、数据传输和连接释放;在TCP/IP协议栈中,TCP协议提供面向连接的服务。70无连接服务:无连接服务指的是两个实体之间的通信不需要先建立好一条连接,其所需的下层资源在数据传输时动态地进行分配无连接服务的优点是灵活方便和效率高;但它不能防止报文的丢失、重复或失序无连接服务又可分为三种类型:数据报:不需要接收端做任何响应证实交付:这种服务对每一个报文都产生一个证实给发方,不过这个证实不是来自接收端的用户而是来自提供服务的协议层。请求应答:这种服务对每一个报文都产生一个证实给发方,不过这个证实是来自接收端的用户。71项目\服务类型面向连接服务无连接服务端到端的连接必须有不需要目的站地址仅在连接建立阶段使用每个分组都要有目的站的完整地址路由选择在连接建立时确定每个分组独立选择路由分组的顺序总是按发送顺序到达目的站到达目的站的顺序可能与发送顺序不同端端排序由通信子网负责由主机负责端端的差错处理和端端的流量控制由通信子网负责由主机负责灵活性差好可靠性好差效率低高适用场合适合有许多连续报文且要求可靠、有序地数据发送适合少量零星报文、且可靠性要求不高的数据传送两种服务的比较72小结 本章我们学习了计算机网络程序设计中的一些基本概念、内容和方法,包括:网络应用程序所访问的网络服务网络程序设计模式网络程序设计所依赖的网络应用编程接口网络程序设计要特别考虑的问题73ServerClientServiceshttp(80)SMTP(25))telnet(23)74网络编程语言沈卫平75762008编程语言走势解盘Java类语言:Java似乎会逐渐走下坡。J2ME会受到GoogleAndroid、AdobeFlashLite、.NETCompactFramework的影响;J2SE的对手则是.NET和AIR;J2EE在中小型网站受到PHP、Ruby-on-Rails(RoR)很大的冲击。幸好,目前大型企业好像还是买J2EE的帐。在J2ME和J2SE方面,未来似乎可以用JavaFX奋力一搏;在J2EE方面,也有Groovy/Grails可以抵挡RoR。尤其目前大家怀疑PHP和RoR只适合用在中小型网站,大型企业网站似乎还是用J2EE比较安心,Groovy/Grails可以保障大家在J2EE上既有的投资。如果你是Java爱好者,最近有点想改用RoR,那么你可以去看看Grails,或许你会因此想继续留在Java阵营。772008编程语言走势解盘PHP语言:因为PHP对初学者相当友善,所以过去这几年使用者数量增加快速,但是似乎已经到达瓶颈,这可能是RoR造成的。随着RoR推出新版,PHP会受到更大的挑战。连开发工具厂商CodeGear都在2007年推出Ruby和PHP的开发工具,显见这两个语言似乎都会逐渐走入企业市场。Python语言:Python早就移植到.NET和Java,2008年会持续推出修订版本,而且也会推出全新的Python3000。Python3000不以相容于2.x版为目的,而是要运用过去培养出来的经验,彻底翻新Python。目前Python编程员的需求也已经超越Perl。782008编程语言走势解盘Perl语言:目标远大是一件好事,但目标远大却没有足够的资源可以完成目标,就会陷入绝境。Perl6就是这样的例子,它比.NET更早提出,但这几年下来,.NET已经从1.0进入到3.5,Perl6却连1.0都还没诞生。Perl擅长文字数据处理,但是在大部分语言都支持RegularExpression,加上文字数据大量XML化之后,Perl的优势已经消失大半。Ruby语言:Ruby可能会在2008年推出2.0,加上2007年底已经推出的RoR2.0,Ruby整个就是一股挡不住的气势。可能在2008年底之前,Ruby在TIOBE的排行榜上就会超越Perl,只剩下Python和PHP这两个对手了。792008编程语言走势解盘JavaScript语言:Web应用蔚为主流,而JavaScript又是浏览器的标准语言,所以这几年来相当受到重视。在Adobe推出AIR,Mozilla推出Prism之后,JavaScript可以开发出「某些种类」的桌面应用,JavaScript的用途变得更广。而JavaScript的兄弟ActionScript,随着AIR的推出又会更受欢迎一些,但是Silverlight的推出,又会抵销ActionScript成长力道。802008编程语言走势解盘C语言:系统语言语言方面,C语言的地位还是一样重要,C++则会慢慢走下坡;D语言崛起,将会接收相当多原来C++的使用者,而Delphi则是一蹶不振,当年Delphi/Kylix跨Windows/Linux的美梦已然消失。D语言:多年来,D语言平均一个月推出两个版本,改版速度相当快,在2007年1月推出1.0版后,不出几个月,又推出2.0版。1.0版持续做bug修订,尽量不加新特色,2.0版则继续进行实验性的翻修。虽然D语言1.0才正式推出1年,但已经成为相当受欢迎的系统语言,可惜至今仍然没有很好用的IDE。812008编程语言走势解盘Lua、PowerShell、Erlang语言:可说是未来几年窜升力道最强的潜力之星,但都还不至于成为主流语言。Lua是相当小的语言,适合嵌入其他的环境中,和其他语言一同使用,根据TIOBE开发语言排行榜数据显示,这几年Lua越来越受到重视,尤其2007年Lua更是往上猛窜二十几个名次,由此可见Lua的需求大增。随着WindowsVista系统的出货,未来几年PowerShell会成为相当重要的系统管理语言。目前的多核心环境、网络分布式计算、容错的需求,则让Erlang持续受到重视。822008编程语言走势解盘在2007年第三季,AppleiPhone在美国的Smartphone市场占有率已经到达27%,超过WindowsMobile。继美洲和欧洲之后,2008年iPhone会在亚洲开始贩卖,并推出第二代机种,也预计在2008年推出SDK(软件开发工具包),让我们可以为iPhone写原生(Native)程序。所以,如果你需要为Smartphone开发应用,除了考虑WindowsMobile之外,你也必须思考是否要用Objective-C语言开发的MacOS应用了(iPhone使用精简版的MacOSX)。832008编程语言走势解盘转换语言的成本通常很高,所以一年之内,各个语言通常不会有太大的兴衰变化,这里是描述以2008为中心,前后数年期间各类编程语言的整体状况;把时间拉长,发展态势会比较明显,不受到短期震荡的影响,预测未来就不至于太过离谱,让大家当作未来选择语言的参考。84WEB2.0互联网下一步,是要让所有的人都忙起来,全民织网,然后用软件,机器的力量使这些信息更容易被需要的人找到和浏览。如果说WEB1.0是以数据为核心的网,那WEB2.0是以人为出发点的互联网。我们看一看最近的一些WEB2.0产品,就可以理解以上观点。

Blog:用户织网,发表新知识,和其他用户内容链接,进而非常自然的组织这些内容。

RSS:用户产生内容自动分发,定阅

Podcasting:个人视频/声频的发布/定阅

SNS:blog+人和人之间的链接

WIKI:用户共同建设一个大百科全书85WEB2.0从知识生产的角度看,WEB1.0的任务,是将以前没有放在网上的人类知识,通过商业的力量,放到网上去。WEB2.0的任务是,将这些知识,通过每个用户的浏览求知的力量,协作工作,把知识有机的组织起来,在这个过程中继续将知识深化,并产生新的思想火花;

从内容产生者角度看,WEB1.0是商业公司为主体把内容往网上搬,而WEB2.0则是以用户为主,以简便随意方式,通过blog/podcasting方式把新内容往网上搬;

从交互性看,WEB1.0是网站对用户为主;WEB2.0是以P2P为主。

从技术上看,WEB客户端化,工作效率越来越高。比如像Ajax技术,GoogleMAP/Gmail里面用得出神入化。

我们看到,用户在互联网上的作用越来越大;他们贡献内容,传播内容,而且提供了这些内容之间的链接关系和浏览路径。在SNS里面,内容是以用户为核心来组织的。WEB2.0是以用户为核心的互联网。

86REST

(RepresentationalStateTransfer)

REST软件架构是由RoyThomasFielding博士在2000年首次提出的。他为我们描绘了开发基于互联网的网络软件的蓝图。REST软件架构是一个抽象的概念,是一种为了实现这一互联网的超媒体分布式系统的行动指南。利用任何的技术都可以实现这种理念。而实现这一软件架构最著名的就是HTTP协议。通常我们把REST也写作为REST/HTTP,在实际中往往把REST理解为基于HTTP的REST软件架构,或者更进一步把REST和HTTP看作为等同的概念。今天,HTTP是互联网上应用最广泛的计算机协议。HTTP不是一个简单的运载数据的协议,而是一个具有丰富内涵的网络软件的协议。它不仅仅能够对于互联网资源进行唯一定位,而且还能告诉我们对于该资源进行怎样运作。这也是REST软件架构当中最重要的两个理念。而REST软件架构理念是真正理解HTTP协议而形成的。有了REST软件架构理念出现,才使得软件业避免了对HTTP协议的片面理解。只有正确的理论指导,才能避免在软件开发的实际工作过程中少走弯路。87REST与URI(资源定位)REST软件架构之所以是一个超媒体系统,是因为它可以把网络上所有资源进行唯一的定位,不管你的文件是图片、文件Word还是视频文件,也不管你的文件是txt文件格式、xml文件格式还是其它文本文件格式。它利用支持HTTP的TCP/IP协议来确定互联网上的资源。88REST与CRUD原则REST软件架构遵循了CRUD原则,该原则告诉我们对于资源(包括网络资源)只需要四种行为:创建(Create)、获取(Read)、更新(Update)和销毁(DELETE)就可以完成对其操作和处理了。其实世界万物都是遵循这一规律:生、见、变、灭。所以计算机世界也不例外。这个原则是源自于我们对于数据库表的数据操作:insert(生)、select(见)、update(变)和delete(灭),所以有时候CRUD也写作为RUDI,其中的I就是insert。这四个操作是一种原子操作,即一种无法再分的操作,通过它们可以构造复杂的操作过程,正如数学上四则运算是数字的最基本的运算一样。89REST与网络服务尽管在Java语言世界中网络服务目前是以SOAP技术为主,但是REST将是网络服务的另一选择,并且是真正意义上的网络服务。基于REST思想的网络服务不久的将来也会成为是网络服务的主流技术。REST不仅仅把HTTP作为自己的数据运输协议,而且也作为直接进行数据处理的工具。而当前的网络服务技术都需要使用其它手段来完成数据处理工作,它们完全独立于HTTP协议来进行的,这样增加了大量的复杂软件架构设计工作。REST的思想充分利用了现有的HTTP技术的网络能力。在德国电视台上曾经出现过一个这样的五十万欧元智力题:如何实现网络服务才能充分利用现有的HTTP协议?该问题给出了四个答案:去问微软;WSDL2.0/SOAP1.2;WS-Transfer;根本没有。这个问题告诉我们HTTP并不是一个简单的数据传来传去的协议,而是一个聪明的会表现自己的协议,这也许是REST=RepresentationalStateTransfer的真正含义。实际上目前很多大公司已经采用了REST技术作为网络服务,如Google、Amazon等。在Java语言中重要的两个以SOAP技术开始的网络服务框架XFire和Axis也把REST作为自己的另一种选择。它们的新的项目分别是ApacheCXF和Axis2。Java语言也制定关于REST网络服务规范:JAX-RS:JavaAPIforRESTfulWebServices(JSR311)。相信还会出现更多与REST相关的激动人心的信息。90REST与AJAX技术尽管AJAX技术的出现才不到两年时间,但是AJAX技术遵循了REST的一些重要原则。AJAX技术充分利用了HTTP来获取网络资源并且实现了HTTP没有的对于异步数据进行传输的功能。AJAX技术还使得软件更好地实现分布性功能,在一个企业内只要一个人下载了AJAX引擎,其它企业内部的人员,就可以共享该资源了。AJAX技术遵守REST准则的应用程序中简单和可伸缩的架构,凡是采用AJAX技术的页面简洁而又丰富,一个页面表现了丰富多彩的形态。AJAX技术还使用了一种不同于XML格式的JSON文件格式,这个意义在哪里呢?在REST软件架构下我们不能对于XML文件进行序列化处理,这样程序员必须要使用自己的XML绑定框架。而以序列化的JavaScript对象为基础的JSON已经获得了广泛认可,它被认为能以远比XML更好的方式来序列化和传输简单数据结构,而且它更简洁。这对REST是一个极大贡献和补充。当前的网络应用软件还违背了REST的“无状态服务器”约束。REST服务器只知道自己的状态。REST不关心客户端的状态,客户端的状态自己来管理,这是AJAX技术的应用之地。通过AJAX技术,可以发挥有状态网络客户机的优势。而REST的服务器关心的是从所有网络客户端发送到服务器操作的顺序。这样使得互联网这样一个巨大的网络得到有序的管理。91REST与Rails框架

RubyonRails框架(简称Rails或者Rails框架)是一个基于Ruby语言的越来越流行的网络应用软件开发框架。它提供了关于REST最好的支持,也是当今应用REST最成功的一个软件开发框架。Rails框架(从版本1.2.x起)成为了第一个引入REST作为核心思想的主流网络软件开发框架。在Rails框架的充分利用了REST软件架构之后,人们更加坚信REST的重要性和必要性。Rails利用REST软件架构思想对网络服务也提供了一流的支持。从最直观的角度看待REST,它是网络服务最理想的手段,但是Rails框架把REST带到了网络应用软件开发框架。这是一次飞跃,让REST的思想从网络服务的应用提升到了网络应用软件开发。利用REST思想的simply_restful插件已经成为了Rails框架的核心内容。92REST安全性

我们把现有基于SOAP的网络服务和基于REST/HTTP网络服务作个比喻,前者是一种传统的寄信方式,而后者是现代网络的电子邮件方式。要是是寄信和电子邮件都有病毒存在的话,传统的寄信被送到对方就很危险,而电子邮件是开发的,电子邮件供应商比如Google为我们检查了电子邮件是否有病毒。这里并不是说明SOAP网络服务消息包含义病毒,而是说明HTTP是无法处理SOAP信息包究竟好不好,需要额外的软件工具解决这一问题,包括防火墙也用不上和管不了。REST/HTTP网络服务的信息包可以被防火墙理解和控制。你可以按照操作和链接进行过滤信息包,如你可以规定从外部来的只能读取(GET操作)自己服务器的资源。这样对于系统管理员而言使得软件管理更为简单。REST的安全性还可以利用传输安全协议SSL/TLS、基本和摘要式认证(BasicundDigestAuthentication)。除了这些REST自身的安全性功能外,还可以利用像基于信息的WebServicesSecurity(JSR155)作为REST不错的补充。93参考文献中文参考文献

RoyThomasFielding博士论文中文版本

RoyThomasFielding博士论文英文版本

94RSSRSS是在线共享内容的一种简易方式(也叫聚合内容,ReallySimpleSyndication)。通常在时效性比较强的内容上使用RSS订阅能更快速获取信息,网站提供RSS输出,有利于让用户获取网站内容的最新更新。网络用户可以在客户端借助于支持RSS的聚合工具软件(例如SharpReader,NewzCrawler、FeedDemon),在不打开网站内容页面的情况下阅读支持RSS输出的网站内容。说得更加简单一点,RSS就是一种用来分发和汇集网页内容的XML格式!如果你还是不太明白,没有关系,RSS是什么其实并不重要,重要的是RSS可以做什么,下面我们就来了解一下,RSS能给我们带来什么?95RSS可以干什么1.订阅BLOG(你可以订阅你工作中所需的技术文章;也可以订阅与你有共同爱好的作者的Blog,总之,你对什么感兴趣你就可以订什么)

2.订阅新闻(无论是奇闻怪事、明星消息、体坛风云,只要你想知道的,都可以订阅)

你再也不用一个网站一个网站,一个网页一个网页去逛了。只要这将你需要的内容订阅在一个RSS阅读器中,这些内容就会自动出现你的阅读器里,你也不必为了一个急切想知道的消息而不断的刷新网页,因为一旦有了更新,RSS阅读器就会自己通知你!96RSS阅读器目前,RSS阅读器基本可以分为两类。

第一类大多数阅读器是运行在计算机桌面上的应用程序,通过所订阅网站的新闻供应,可自动、定时地更新新闻标题。在该类阅读器中,有Awasu、FeedDemon和RSSReader这三款流行的阅读器,都提供免费试用版和付费高级版。国内最近也推出了几款RSS阅读器:周博通,看天下,博阅。另外,开源社区也推出了很多优秀的阅读器,RSSOWl(完全java开发,点击下载)它不仅是完全支持中文界面,而且还是完全的免费软件!(后面我们就将以开源软件周博通和rssowl为例,为大家介绍怎样来使用RSS阅读器-周伯通,怎样使用RSS阅读器-rssowl))

第二类新闻阅读器通常是内嵌于已在计算机中运行的应用程序中。例如,NewsGator内嵌在微软的Outlook中,所订阅的新闻标题位于Outlook的收件箱文件夹中。另外,Pluck内嵌在InternetExplorer浏览器中!

另外,FireFox浏览器内置对RSS支持,可以使用Firefox订阅RSS哦。97RSS的联合(Syndication)和聚合(Aggregation)发布一个RSS文件(RSSFeed)后,这个RSSFeed中包含的信息就能直接被其他站点调用,而且由于这些数据都是标准的XML格式,所以也能在其他的终端和服务中使用,如PDA、手机、邮件列表等。而且一个网站联盟(比如专门讨论旅游的网站系列)也能通过互相调用彼此的RSSFeed,自动的显示网站联盟中其他站点上的最新信息,这就叫着RSS的联合。这种联合就导致一个站点的内容更新越及时、RSSFeed被调用的越多,该站点的知名度就会越高,从而形成一种良性循环。

而所谓RSS聚合,就是通过软件工具的方法从网络上搜集各种RSSFeed并在一个界面中提供给读者进行阅读。这些软件可以是在线的WEB工具,如,,,,等,当然,可以使用我们以上提到的客户端工具。98RSS的未来发展随着越来越多的站点对RSS的支持,RSS已经成为目前最成功的XML应用。RSS搭建了信息迅速传播的一个技术平台,使得每个人都成为潜在的信息提供者。相信很快我们就会看到大量基于RSS的专业门户、聚合站点和更精确的搜索引擎。99常见RSS订阅工具BitsCastRSSNewsReader/Podcaster

onelurv

BOKEE

GreatNews

HEXUNRSSREADER和讯博揽

iSpaceDesktop

Liferea

NewsFire

NetNewsWire

Plazoo

RSSBandit

RSSOwl

RSSReader

SharpReader

Straw

Vienna

百博

新浪点点通阅读器100参考文献1、RSS0.9Specification2、RSS1.0Specification3、RSS2.0Specification101ATOMATOM是一种订阅网志的格式。它与RSS相比来讲,有更大的弹性。

atom是一种基于XML的文档格式以及基于HTTP的协议,它被站点和客户工具等用来聚合网络内容,包括weblog和新闻标题等,它借鉴了各种版本RSS的使用经验

Atom正走在通往IETF标准的路上,在这之前,Atom的最后一个版本是"Atom0.3",并且已经被相当广泛的聚合工具使用在发布和使用(consuming)上。值得一提的是,Blogger和Gmail这两个由Google提供的服务正在使用Atom.102开放API以前的开放API(应用程序接口)主要指桌面应用软件,希望通过开放API融合更多的应用。在WEB1.0时代只有少数网站,比如EBAY,亚马逊公司(Amazon)、雅虎公司、Google公司等,在设计之初就遵循各种工业化标准,进而开放API接口,正是由于这些开放的API,他们获得了不少有趣、有意思的应用。但大多数公司当时还没有这种意识,不过在Web2.0时代,开放API已经成为不可忽视的趋势。

对于公司来说,技术领域的竞争已经演化为标准之争,标准的形成在于有多少人在使用,因此开放API就意味更多的人采用,也就意味着标准。Google公司显然深谙此道。它所推出的诸多产品都是基于开放的API标准。最典型的例子就是Googlemap,开放GoogleMap的API后,Google公司无需花费力气做更多的市场推广,其他公司就会主动地整合它的应用。如前文我们提到的美国房地产交易地图网就是在其网站中主动整合GoogleMap。正是看到开放后的巨大前景,微软、雅虎、Skype也纷纷加入其中。

103AJAXAJAX的全称是AsynchronousJavaScriptandXML,它不是一种技术而是数种技术的组合。AJAX采用远程脚本调用技术,通过JavaScript语言与XMLHttpRequest对象来实现数据请求,将处理由服务器转移到客户端,减少了服务器的资源占用,加快了数据处理的速度。采用AJAX开发的软件能让你在使用网络应用软件时感觉就象在本机上一样。

目前AJAX技术已经广泛应用于网络应用软件开发中,Google也许是AJAX技术开发投入最大收获最多的公司,AJAX已经成功应用于GMail、GoogleSuggest和GoogleMaps等网络应用软件中。

除了Google以外还有更多的公司在采用AJAX。在AJAX的帮助下Zimbra公司开发的电子邮件中,比GMail和HotMail更加互动。M公司也在即时通讯软件中采用AJAX技术,以创造更好的用户体验。即使微软也不能阻挡AJAX的魅力,微软声称将在下一代HotMail中加入AJAX工具条。104Ajax工具和技术综述Ajax(AsynchronousJavaScript+XML)编程技术正逐渐主导Web应用程序开发领域。每天都有新的开发人员步入Ajax开发的殿堂,他们拥有不同的开发背景。本系列的第1部分将提供来自IBM®Ajax开发人员专家组的Ajax开发资源备忘单。作者根据他们自己的ramp-up经验为您提供了一些实用的信息,这些信息可以帮助您快速进入高效Ajax开发的轨道。Ajax是一种Web应用程序客户机技术,它结合了JavaScript、层叠样式表(CascadingStyleSheets,CSS)、HTML、XMLHttpRequest对象和文档对象模型(DocumentObjectModel,DOM),关于各种标准的更多信息,请参阅参考资料。运行在浏览器上的Ajax应用程序以一种异步的方式与Web服务器通信,并且只更新页面的一部分。通过利用Ajax技术,可以提供丰富的、基于浏览器的用户体验。在开始Ajax之旅以前,需要熟悉很多不同的语言、标准、工具和库。一开始就要在不同选项之间做出选择并组合出一个开发环境来可能有些勉为其难。作者将根据他们自己的ramp-up(项目初始阶段的准备工作)经验帮助您在旅途中避免可能遇到的一些比较常见的、令人厌烦的问题。105Ajax工具和技术综述Ajax将改变用户在网站上的体验,之前的单击-显示页面式的体验将变成具有交互性、灵活性的桌面应用程序体验。用户可以避免页面重新加载,避免等待下一部分内容的呈现。您可能在想,这一切听起来是不错,但是如何才能做得到呢?为了回答这个问题,先来看看Ajax技术背后的一些幕后故事。Ajax是以下Web技术和标准的集合,它允许使用客户端的机器在背后运行应用程序逻辑的重要部分,而不仅仅是呈现应用程序的输出:超文本标记语言(HypertextMarkupLanguage,HTML):定义最终呈现给用户的内容。层叠样式表(CascadingStyleSheets,CSS):定义所呈现内容的样式(或装饰)。文档对象模型(DocumentObjectModel,DOM):一种API,浏览器使用它将被呈现内容公开给JavaScript脚本。然后,脚本可以使用DOM在用户看到内容之前动态地修改内容。XmlHttpRequest对象:为浏览器与服务器之间的交互提供便利,通过JavaScript脚本调用。JavaScript:在浏览器中执行的一种编程语言,将所有其他的Ajax组成部分黏合在一起。脚本可以侦听浏览器中发生的事件(例如单击一个按钮),并使用XmlHttpRequests回调服务器以对事件作出反应,然后根据返回的结果修改DOM树。所有这些技术都在用户的Web浏览器中执行,用户的Web浏览器充当执行Ajax程序的平台。106Ajax工具和技术综述如果要使用Ajax,那么有一点值得格外注意:组成它的技术虽然是基于标准的,但又是特定于浏览器的。换句话说,同一个应用程序在不同的浏览器上可能表现出不同的行为。然而,由于既不可能限制用户使用特定的浏览器,又不可能忽略客户机的浏览器可能不支持CSS或DOM这一事实,因此,作为应用程序的创建者,您需要理解各种不同浏览器之间的差异。要成为一名高效的Ajax开发人员,需要:了解形成Ajax开发基础的技术。理解可用的运行时平台和Web浏览器。开发Ajax应用程序时使用支持各种语言的IDE。拥有用于各种环境和语言的调试器和应用程序测试工具。107信息源developerWorks上由BrettMcLaughlin撰写的掌握Ajax

系列是最好的Ajax教程之一。该系列不要求预先知道多少Ajax编程知识,并且描述了各种与Ajax相关的技术。如果您想更好地理解Web架构,那么可能需要对RepresentationalStateTransfer(REST)有所熟悉。“HowtoCreateaRESTProtocol”(请参阅参考资料)这篇文章可以作为这一方面很好的入门资料。阅读完掌握Ajax

系列,并且亲自开始一些开发之后,您还将需要一些其他的参考信息。W3Schools(请参阅参考资料)提供了核心Ajax技术(JavaScript、CSS、HTML、DOM、XML等)的在线参考信息。如果您使用的是MozillaFirefox浏览器,那么应该使用DevEdge侧栏(请参阅参考资料)。这些侧栏包含各种Ajax技术标准的索引,您可以使用它们作为参考指南。最后,如果您想到Ajax社区去感受一下,那么应该订阅Ajaxian博客(请参阅参考资料)。108浏览器作为运行时环境Web浏览器不仅是Ajax部署环境,同时还是调试环境。大多数浏览器都可以添加调试辅助工具,例如DOM树查看器或调试器。文章下节将对以下各种流行的浏览器作一个概述:Microsoft®InternetExplorer(IE)FirefoxSafari109InternetExplorerIE一直是大多数用户的选择。IE6是一款成熟的浏览器,具有非常深的市场底蕴。很多CSS和DOM特性在IE6中不受支持,或者以一种专用的形式提供。使用IE6的开发人员可能会遇到以下一些问题:缓慢的JavaScript解释器和不一致的标准实现。缺少透明的PNG支持。DOM事件:一个事件可能在Firefox中使用一个名称,而在IE中又使用另一个名称。有些事件的调用顺序不一样,在IE中和在Firefox中相同的事件对象可能具有不同的属性。有关这一问题的更多信息,请阅读“把应用程序从InternetExplorer迁移到Mozilla”(请参阅参考资料)。未实现的CSS属性,例如minimum/maximumheight、selectors等等。尽管存在这些问题,您还是应该相信大多数用户都是使用这个浏览器。也可以试着使用各种不同的库从而在一定程度上填补IE6的不足,例如/IE7/(请参阅参考资料)。IE7在IE6的基础上有了很多明显的改进,例如对标签的支持。对于开发人员而言,隐藏的改进更为重要。IE7提供了一个性能更佳的JavaScript解释器,并修复了IE6中的很多缺陷(例如CSS),使得最遵从标准的Ajax应用程序只需要少量的修改便可以在该浏览器上运行。110IE调试辅助工具可以使用以下工具在IE中调试应用程序:IEDeveloperToolbar:允许更好地控制IE环境(缓存,cookie),浏览DOM树,以及浏览和操纵元素的样式。在分析由应用程序生成的页面时,这是非常有用的工具。(IEDeveloperToolbar可以从Microsoft下载。参考资料中提供了下载链接。)MicrosoftScriptDebugger:随MicrosoftOffice(可以从Microsoft下载,请参阅参考资料)一起发布,通过它可以在JavaScript代码中设置断点,观察变量,还可以执行常规的调试例程。注意,在调试时,建议在每个调试会话之前通过IEDeveloperToolbar禁用缓存,否则后面会调试缓存版本的代码。111IE调试辅助工具IE相关浏览器可以使用Trident(IE浏览器引擎)创建“新”的浏览器,例如Maxthon。这里新字打上了引号,因为从开发人员的角度来看,浏览器的关键特(例如对Ajax的支持)仍然相同。(请参阅参考资料了解更多关于Trident的知识。)112MozillaFirefox虽然Firefox已经出来好几个版本,但是这里只讨论Firefox2.0。开发人员和超级用户常常使用Firefox,它是UNIX®-类操作系统的首选,而且是开放源码的,除了IE之外,它是最流行的浏览器。Firefox有一个速度很快的JavaScript解释器,并且具有各种Web标准的优异的实现。由于它的Ajax友好性,我们强烈建议将Firefox用于大多数Ajax开发。通常,很多Ajax开发人员都是在Firefox上开始应用程序开发的,然后才转而使用其它浏览器。113Firefox调试辅助工具Firefox具有一个强大的、开放的扩展机制,它的社区借助这种机制创建了大量的Web开发辅助工具。然而,到目前为止,Firebug(请参阅参考资料)是其中最为流行的。(要了解关于Firebug功能的更多细节,请参阅“AjaxDebuggingwithFirebug”)。Firebug是一个集成的扩展,通过它可以:使用断点、变量查看和逐步方式来调试JavaScript代码。查看网络状况。查看和优化各种不同元素的DOM树和CSS。Firebug1.0的强大性和灵活性为Ajax开发树立了里程碑,也是使用Firefox作为首选开发浏览器的有力的理由。Firefox相关的浏览器一些浏览器,例如Camino,使用了Firefox的布局引擎MozillaGecko(请参阅参考资料)。这些浏览器通过一个匹配的Gecko版本能够提供与Firefox相同的功能。114SafariSafari是随MacOSX一起发布的浏览器(从第3版开始,也在Windows®上运行。)Safari虽然比Firefox和IE7快很多,但是缺少对标准的支持(不过最新的WebKit构建有了一些改进;文章下节将会更详细地介绍WebKit)。还应注意,Safari开发人员社区规模远远小于Firefox和IE的开发人员社区。因此,网上关于Safari的信息较少,而且很多库都没有在Safari上经过良好的测试。115Safari调试辅助工具Safari浏览器引擎是在一个名为WebKit的开放源码项目(请参阅参考资料)中开发的。为了在Safari中调试应用程序,建议使用一个WebKit构建。该构建包括:经过定制的带有CSS和DOM查看器的浏览器。Drosera:一个JavaScript调试器。Drosera可用于调试应用程序,但是与Firebug相比其特性比较有限。如果您坚持在Safari中测试应用程序,那么可以打开SafariDebug菜单,通过该菜单可以查看DOM树、CSS和缓存等。116Safari相关的浏览器WebKit应用于很多浏览器,其中最引入注目的是OmniWeb。AjaxIDE和工具在开发新的Ajax应用程序时,如果所使用的IDE支持所有Ajax相关技术并且提供快捷、友好的开发环境和UI将会使您如虎添翼。在选择一款AjaxIDE时,需要考虑以下一些特性:具有自动完成、颜色突出显示、错误提示等功能的语法制导编辑功能(用于HTML、CSS、JavaScript和DOM)各种技术的相关文档集成的JavaScript调试器网络监控功能DOM内省框架集成虽然您可能会考虑购买一个IDE,但其实Eclipse和它的相关插件就提供了一个功能完善的、基于开放源码的AjaxIDE,这个IDE可以免费下载。本节将讨论以下这些基于Eclipse的、包括插件的AjaxIDE:含Web工具箱(toolkit)的EclipseEclipseATFAptana117含有Web工具箱的Eclipse如果您是一名Java™开发人员,负责服务器端的Java开发,那么使用EclipseWeb工具箱也是开始基本Ajax开发的简单易行的方法。通过添加Eclipse的Web工具(请参阅参考资料),可以获得一个可用于开发Web工件的基本环境,还可以获得可编辑HTML、CSS和JavaScript文件的编辑器和编辑工具。注意,EclipseWeb工具环境不限于Ajax开发,它还支持侧重于服务器端的Web应用程序开发。因此,它提供了诸如语法突出显示和基本代码完成之类的核心功能。它并未提供特定于Ajax开发任务的调试功能或DOM操纵功能。118EclipseATF您可以安装EclipseAjaxToolkitFramework(ATF)环境(请参阅参考资料),并将其与EclipseWeb工具箱相结合,从而产生一个强大的、支持Ajax开发需求所有方面的环境。ATF提供了以下特性:一个DOM浏览器和CSS运行时编辑器一个JavaScript调试器(通过利用MozillaXUL运行程序)网络流量监控通过库配置文件实现常用库的简单库集成与JSLint(请参阅参考资料)的集成,以执行JavaScript验证该工具箱中一个非常有价值的特性是在集成的XUL运行程序中运行、测试和检查应用程序。119SOAandWebservices面向服务的体系结构(Service-OrientedArchite

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论