《网络编程实用教程第1章.ppt》由会员分享,可在线阅读,更多相关《网络编程实用教程第1章.ppt(75页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、网络编程实用教程第1章 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望第一页 最后一页吉林大学软件学院吉林大学软件学院课程简介l使用教材使用教材l网络编程实用教程l人民邮电出版社 叶树华 高志红 编著l考核方式考核方式l考试 80 分l考勤 20 分第一页 最后一页吉林大学软件学院吉林大学软件学院主要内容l网络通信编程基本概念和编程模式网络通信编程基本概念和编程模式lUNIX套接字编程套接字编程lSockets规范规范lWinInet API和和MFC WinIn
2、et类类lWin32的多进程机制的多进程机制l5种套接字种套接字I/O模型模型l电子邮件系统的构成和工作原理电子邮件系统的构成和工作原理第第1章章 网络编程基础网络编程基础l进程通信的概念l因特网中网间进程的标识方法l网络协议的特征lTCP/IP中用户数据报协议UDP和传输控制协议TCP的特点 l目前的网络编程现状l网络应用程序的客户服务器交互模式第一页 最后一页吉林大学软件学院吉林大学软件学院1.1 网络编程相关的基本概念网络编程相关的基本概念1.1.1 网络编程与进程通信网络编程与进程通信1进程与线程的基本概念进程与线程的基本概念l进程是处于运行过程中的程序实例,是操作系统进程是处于运行过
3、程中的程序实例,是操作系统调度和分配资源的基本单位。调度和分配资源的基本单位。l一个进程实体由三部分构成。一个进程实体由三部分构成。l程序代码:规定进程所做的计算。l数据:计算的对象。l进程控制块:是操作系统为了控制进程建立的数据结构,用来管理进程的内核对象,系统用来存放关于进程的统计信息。第一页 最后一页吉林大学软件学院吉林大学软件学院1.1 网络编程相关的基本概念网络编程相关的基本概念l操作系统给进程分配内存空间:操作系统给进程分配内存空间:l静态分配空间:用来装入进程所有的可执行模块或动态链接库模块的代码及数据。l动态分配空间:如线程堆栈和堆分配空间。l各种计算机应用程序在运行时,都以进
4、程的形式各种计算机应用程序在运行时,都以进程的形式存在,网络应用程序也不例外。存在,网络应用程序也不例外。lWindows系统不但支持多进程,还支持多线程。系统不但支持多进程,还支持多线程。l进程是分配资源的单位;l线程是执行和调度的单位。l由线程负责执行包含在进程的地址空间中的代码由线程负责执行包含在进程的地址空间中的代码.第一页 最后一页吉林大学软件学院吉林大学软件学院l一个进程可以包含若干个线程,同时执行进程地一个进程可以包含若干个线程,同时执行进程地址空间中的代码。址空间中的代码。l当创建一个进程时,系统会自动创建它的第一当创建一个进程时,系统会自动创建它的第一个线程,称为个线程,称为
5、主线程主线程。l然后,该线程可以创建其他的线程,而这些线然后,该线程可以创建其他的线程,而这些线程又能创建更多的线程。程又能创建更多的线程。l每个线程拥有自己的一组每个线程拥有自己的一组CPU寄存器寄存器和和堆栈堆栈。l进程至少拥有一个线程,否则将被撤销。进程至少拥有一个线程,否则将被撤销。lWindows 2000能在有多个能在有多个CPU的计算机上运行,的计算机上运行,每个每个CPU上运行不同的线程,达到多线程运行。上运行不同的线程,达到多线程运行。第一页 最后一页吉林大学软件学院吉林大学软件学院图图1.1 单单CPU分时地运行进程中的各个线程分时地运行进程中的各个线程第一页 最后一页吉林
6、大学软件学院吉林大学软件学院2网络应用进程在网络体系结构中的位置网络应用进程在网络体系结构中的位置l从从计计算算机机网网络络体体系系结结构构的的角角度度来来看看,网网络络应应用用进进程处于网络层次结构的最上层。程处于网络层次结构的最上层。l从功能上,可以将网络应用程序分为两部分:从功能上,可以将网络应用程序分为两部分:l专门负责网络通信的模块,它们与网络协议栈专门负责网络通信的模块,它们与网络协议栈相连接,借助网络协议栈提供的相连接,借助网络协议栈提供的服务服务完成网络完成网络上数据信息的交换。上数据信息的交换。l面向用户或者作其他处理的模块,它们接收用面向用户或者作其他处理的模块,它们接收用
7、户的命令,或者对借助网络传输过来的数据进户的命令,或者对借助网络传输过来的数据进行加工。行加工。l两部分模块相互配合来实现网络应用程序功能。两部分模块相互配合来实现网络应用程序功能。第一页 最后一页吉林大学软件学院吉林大学软件学院图图1.2 网络应用程序在网络体系结构中的位置网络应用程序在网络体系结构中的位置第一页 最后一页吉林大学软件学院吉林大学软件学院l网络应用程序这两部分的关系:网络应用程序这两部分的关系:l通信模块,是网络分布式应用的基础;l其他模块,对网络交换的数据进行加工处理。l网网络络应应用用程程序序要要实实现现网网络络资资源源的的共共享享,共共享享的的基基础就是必须能够通过网络
8、轻松地传递各种信息。础就是必须能够通过网络轻松地传递各种信息。l网网络络编编程程首首先先要要解解决决网网间间进进程程通通信信的的问问题题。然然后后才能在通信的基础上开发各种应用功能。才能在通信的基础上开发各种应用功能。第一页 最后一页吉林大学软件学院吉林大学软件学院3实现网间进程通信必须解决的问题实现网间进程通信必须解决的问题l网网间间进进程程通通信信,是是指指网网络络中中不不同同主主机机中中的的应应用用进进程之间的相互通信问题,必须解决以下问题:程之间的相互通信问题,必须解决以下问题:l网间进程的标识问题网间进程的标识问题(不能只用进程号标识);l如如何何与与网网络络协协议议栈栈连连接接的的
9、问问题题(通过定义套接字网络编程接口来解决);l多重协议识别问题多重协议识别问题(不同协议工作方式不同);l不不同同的的通通信信服服务务的的问问题题(要求不同,如文件传输要求可靠、无差错、无乱序、无丢失,网络聊天要求不高,可选TCP和UDP服务)。第一页 最后一页吉林大学软件学院吉林大学软件学院1传输层在网络通信中的地位传输层在网络通信中的地位1.1.2 因特网中网间进程的标识因特网中网间进程的标识第一页 最后一页吉林大学软件学院吉林大学软件学院lTCP/IP协议栈的特点是协议栈的特点是“两头大、中间小两头大、中间小”l应用层有多个应用进程,使用不同应用层协议;l网络接口层,有多种数据链路层协
10、议,支持不同的物理网络连接;l网络层有IP协议,传输层有TCP和UDP协议。l按按照照OSI七七层层协协议议的的描描述述,传传输输层层与与网网络络层层在在功功能能上的最大区别,是传输层提供进程通信的能力。上的最大区别,是传输层提供进程通信的能力。lTCP/IP协协议议提提出出了了传传输输层层协协议议端端口口(简简称称端端口口)的概念,成功地解决了通信进程的标识问题。的概念,成功地解决了通信进程的标识问题。l传传输输层层是是计计算算机机网网络络中中,通通信信主主机机内内部部进进行行独独立立操操作作的的第第一一层层,是是支支持持端端到到端端的的进进程程通通信信的的关关键键的的一一层。层。第一页 最
11、后一页吉林大学软件学院吉林大学软件学院图图1.3 基于基于TCP/IP协议栈的进程间的通信协议栈的进程间的通信 2端口的概念端口的概念l端口是端口是TCP/IP协议族中,应用层进程与传输层协协议族中,应用层进程与传输层协议实体间的通信接口。议实体间的通信接口。l在在OSI七层协议描述中,将其称为应用层进程与七层协议描述中,将其称为应用层进程与传输层协议实体间的服务访问点(传输层协议实体间的服务访问点(SAP)。)。l应用层进程通过系统调用与某个传输层端口进行绑定,然后通过该接口接收或发送数据。l类似于文件描述符,每个端口都拥有一个叫作端口号(portnumber)的16位整数型标识符。l可以用
12、端口标识通信的网络应用程序。第一页 最后一页吉林大学软件学院吉林大学软件学院l传输层传输层TCP和和UDP两个协议是完全独立的软件模两个协议是完全独立的软件模块,因此各自的端口号也独立。块,因此各自的端口号也独立。l使用时必须说明是UDP端口还是TCP端口,两种协议的端口间没有任何联系。l如同所示,都可以提供65535个端口。l端口是操作系统可分配的一种资源。第一页 最后一页吉林大学软件学院吉林大学软件学院图图1.4 UDP与与TCP的报文格式的报文格式l从从实实现现的的角角度度讲讲,端端口口是是一一种种抽抽象象的的软软件件机机制制,包包括一些数据结构和括一些数据结构和I/O缓冲区。缓冲区。l
13、进程通过系统调用与某端口建立绑定关系后,传输层传给该端口的数据都被相应进程接收,相应进程发给传输层的数据都通过该端口输出。l在在TCP/IP实现中端口操作类似于一般的实现中端口操作类似于一般的I/O操作。操作。l进程获取一个端口,相当于获取本地唯一的I/O文件,可以用一般的读写原语访问。第一页 最后一页吉林大学软件学院吉林大学软件学院3端口号的分配机制端口号的分配机制l网络进程通信前必须获知对方的进程地址。网络进程通信前必须获知对方的进程地址。l由于网络应用程序大多采用C/S模式开发,通信总是由客户机发起,因此事先只需让客户机知道服务器的进程地址即可。lInternet中为客户服务的众所周知的
14、服务有限。lTCP/IP协协议议采采用用了了全全局局分分配配(静静态态分分配配)和和本本地地分配(动态分配)分配(动态分配)相结合的分配方法。相结合的分配方法。l对对于于TCP或或UDP,将将它它们们的的全全部部65535个个端端口口号号分分为为保留端口号保留端口号和和自由端口号自由端口号两部分。两部分。第一页 最后一页吉林大学软件学院吉林大学软件学院l保留端口号,保留端口号,范围是范围是01023,又称为,又称为众所周知的众所周知的端口端口或或熟知端口(熟知端口(well-known port),),只占少数,只占少数,采用全局分配或集中控制的方式,由一个采用全局分配或集中控制的方式,由一个
15、公认的中公认的中央机构央机构根据需要进行统一分配,静态地分配给因特根据需要进行统一分配,静态地分配给因特网上著名的众所周知的服务器进程,并将结果公布网上著名的众所周知的服务器进程,并将结果公布于众。于众。第一页 最后一页吉林大学软件学院吉林大学软件学院表表1.1 一些典型的应用层协议分配到的保留端口一些典型的应用层协议分配到的保留端口 TCP的保留端口UDP的保留端口FTP21DNS53HTTP80TFTP69SMTP25SNMP161POP3110l自自由由端端口口号号,范范围围是是102465535,采采用用本本地地分分配配,又称为动态分配。又称为动态分配。lTCP或或UDP端口的分配规则
16、是:端口的分配规则是:l端口0:不使用,或者作为特殊的使用;l端口1-255:保留给特定的服务,TCP和UDP均规定,小于256的端口号才能分配给网上著名的服务;l端口256-1023:保留给其他的服务,如路由;l端口1024-4999:可用作任意客户的端口;l端口5000-65535:可用作用户的服务器端口。第一页 最后一页吉林大学软件学院吉林大学软件学院l在这样的端口分配机制下,客户进程C与服务器进程S第一次通信的情景。第一页 最后一页吉林大学软件学院吉林大学软件学院图图1.5 客户与服务器的第一次通信客户与服务器的第一次通信l为为确确保保服服务务器器进进程程为为多多个个客客户户机机进进程
17、程服服务务,服服务务器器的的保保留留端端口口是是专专门门用用来来监监听听客客户户端端的的连连接接请请求求的。的。l当当服服务务器器从从保保留留端端口口接接收收到到一一个个客客户户机机的的请请求求后后,立立即即创创建建另另外外一一个个线线程程,并并为为这这个个线线程程分分配配一一个个保保留留端端口口(在在500065535选选择择分分配配),然然后后继继续接收新的客户机请求。续接收新的客户机请求。第一页 最后一页吉林大学软件学院吉林大学软件学院4进程的网络地址的概念进程的网络地址的概念l在在因因特特网网中中,用用一一个个三三元元组组可可以以在在全全局局中中唯唯一一地地标识一个应用层进程:标识一个
18、应用层进程:应用层进程地址应用层进程地址 =(传输层协议,主机的(传输层协议,主机的IPIP地址,地址,传输层的端口号)传输层的端口号)l这个三元组叫做一个这个三元组叫做一个半相关(半相关(半相关(半相关(half-associationhalf-association),它标识了因特网中,进程间通信的一个端点,也它标识了因特网中,进程间通信的一个端点,也把它称为把它称为进程的网络地址进程的网络地址进程的网络地址进程的网络地址。第一页 最后一页吉林大学软件学院吉林大学软件学院5网络中进程通信的标识网络中进程通信的标识l一一个个完完整整的的网网间间通通信信需需要要一一个个五五元元组组在在全全局局
19、中中唯唯一地来标识:一地来标识:(传输层协议,本地机传输层协议,本地机IP地址,本地机传输层端口,地址,本地机传输层端口,远地机远地机IP地址,远地机传输层端口地址,远地机传输层端口)l 这个五元组称为一个这个五元组称为一个全相关(全相关(association),即,即两个协议相同的半相关才能组合成一个合适的全两个协议相同的半相关才能组合成一个合适的全相关,或完全指定一对网间通信的进程。相关,或完全指定一对网间通信的进程。第一页 最后一页吉林大学软件学院吉林大学软件学院l在网络分层体系结构中,各层之间是严格单向依在网络分层体系结构中,各层之间是严格单向依赖的,各层次的分工和协作集中体现在相邻
20、层之赖的,各层次的分工和协作集中体现在相邻层之间的接口上。间的接口上。l服务是描述相邻层之间关系的抽象概念。服务是描述相邻层之间关系的抽象概念。l下层是服务提供者、上层是服务使用者;l 服务的表现形式是原语操作,一般以系统调用或函数库的形式提供。l系统调用是操作系统内核向网络应用程序或高层协议提供的服务原语。lN层要向N+1层提供比N-1层更完善的服务。1.1.3 网络协议的特征网络协议的特征第一页 最后一页吉林大学软件学院吉林大学软件学院l网络层及以下各层称为通信子网,提供点到点通信,没有程序或进程的概念。l传输层实现的是端到端的通信,引进了网间进程的概念,同时还要解决差错控制、流量控制、报
21、文排序和连接管理等问题。l不同的传输层协议以不同的方式向应用层提供不同的服务。l网络程序开发者应了解常用网络协议的基本特征,网络程序开发者应了解常用网络协议的基本特征,掌握特定协议在程序中的行为方式。掌握特定协议在程序中的行为方式。第一页 最后一页吉林大学软件学院吉林大学软件学院1面向消息的协议与基于流的协议面向消息的协议与基于流的协议(1)面向消息的协议)面向消息的协议l面向消息的协议以消息为单位在网上传送数据,面向消息的协议以消息为单位在网上传送数据,在发送端,消息一条一条地发送,在接收端,也在发送端,消息一条一条地发送,在接收端,也只能一条一条地接收,每一条消息是独立的,消只能一条一条地
22、接收,每一条消息是独立的,消息之间存在着边界。息之间存在着边界。l l保护消息边界:保护消息边界:保护消息边界:保护消息边界:是指传输协议把数据当作一条独是指传输协议把数据当作一条独立的消息在网上传输,接收端只能接收独立的消立的消息在网上传输,接收端只能接收独立的消息,即接收端一次只能接收发送端发出的一个数息,即接收端一次只能接收发送端发出的一个数据包。据包。第一页 最后一页吉林大学软件学院吉林大学软件学院图图1.6 保护消息边界的数据报传输服务保护消息边界的数据报传输服务 第一页 最后一页吉林大学软件学院吉林大学软件学院l lUDPUDP就是面向消息的,适合于交换结构化数据就是面向消息的,适
23、合于交换结构化数据就是面向消息的,适合于交换结构化数据就是面向消息的,适合于交换结构化数据。(2)基于流的协议)基于流的协议l基基于于流流的的协协议议不不保保护护消消息息边边界界,将将数数据据当当作作字字节节流连续地传输,不管实际消息边界是否存在。流连续地传输,不管实际消息边界是否存在。l发送端允许系统将原始消息分解成几条小消息分别发送,或把几条消息积累在一起形成大数据包发送,多次发送的数据统一编号。l如果发送端连续发送数据,接收端有可能在一次接收动作中接收两个或更多的数据包。l只要数据一到达,网络堆栈就开始读取并将其缓存,等待进程处理。第一页 最后一页吉林大学软件学院吉林大学软件学院图图1.
24、7 无消息边界的流传输服务无消息边界的流传输服务第一页 最后一页吉林大学软件学院吉林大学软件学院l lTCPTCP是基于流的协议是基于流的协议是基于流的协议是基于流的协议。l流传输,把数据当作一串数据流,不认为数据是一个一个的消息,编程时不要忽略这一点。2面向连接的服务和无连接的服务面向连接的服务和无连接的服务l一一个个协协议议可可以以提提供供面面向向连连接接的的服服务务,或或者者提提供供无无连接的服务。连接的服务。l面面向向连连接接服服务务,是是电电话话系系统统服服务务模模式式的的抽抽象象,即即每每一一次次完完整整的的数数据据传传输输都都要要经经过过建建立立连连接接、使使用用连接、终止连接的
25、过程。连接、终止连接的过程。l传输过程中数据分组不携带目的地址;lTCP提供面向连接的虚电路服务,建立连接时确定通信路径,并经过协商做好通信准备。l连接需要很多开销,如差错控制和流量控制。第一页 最后一页吉林大学软件学院吉林大学软件学院l无无连连接接服服务务,是是邮邮政政系系统统服服务务的的抽抽象象,每每个个分分组组都都携携带带完完整整的的目目的的地地址址,各各分分组组在在系系统统中中独独立立传传送。送。l不能保证分组按序到达,不能进行分组出错的恢复与重传,不能保证传输的可靠性。l通信前不需建立连接,不管接收端是否做好准备接收数据。lUDP是无连接协议。第一页 最后一页吉林大学软件学院吉林大学
26、软件学院3可靠性和次序性可靠性和次序性l可可靠靠性性,保保证证了了发发送送端端发发出出的的每每个个字字节节都都能能到到达达既既定定的的接接收收端端,不不出出错错,不不丢丢失失,不不重重复复,保保证证数据的完整性,称为数据的完整性,称为保证投递保证投递。l次序性,次序性,是指对数据到达接收端的顺序进行处理。是指对数据到达接收端的顺序进行处理。保护次序性的协议保证接收端收到数据的顺序就保护次序性的协议保证接收端收到数据的顺序就是数据的发送顺序,称为是数据的发送顺序,称为按序递交按序递交。l协议的可靠性和次序性与是否面向连接密切相关,面向连接的协议可保证可靠性和次序性。第一页 最后一页吉林大学软件学
27、院吉林大学软件学院1.1.4 高效的用户数据报协议高效的用户数据报协议UDP第一页 最后一页吉林大学软件学院吉林大学软件学院l用户数据报协议(用户数据报协议(User Datagram Protocol,UDP),是一种尽力传送的、无连接的、不保障),是一种尽力传送的、无连接的、不保障可靠的传输服务,是一种保护消息边界的数据传可靠的传输服务,是一种保护消息边界的数据传输。输。l基于UDP的应用程序在高可靠性、低延迟的网络中运行良好;l在网络层的基础上只增加了端口号的支持;l传输效率高,适用于交易型的应用程序,如TFTP、SNMP、DNS等应用进程。1.1.5 可靠的传输控制协议可靠的传输控制协
28、议TCP1可靠性是很多应用的基础可靠性是很多应用的基础 2TCP为应用层提供的服务为应用层提供的服务lTCP为应用层进程提供一个面向连接的、端到端为应用层进程提供一个面向连接的、端到端的、完全可靠的(无差错、无丢失、无重复或失的、完全可靠的(无差错、无丢失、无重复或失序)全双工的序)全双工的流传输流传输服务。服务。lIP为TCP提供的是无连接的、尽力传送的、不可靠的传输服务,TCP为了向应用层进程提供可靠的传输服务,采取了一系列保障机制。lTCP提供流传输服务,对传输数据的内部结构一无所知,只负责将字节流原封不动的传送到对方的应用进程。第一页 最后一页吉林大学软件学院吉林大学软件学院lTCP被
29、称作一种端对端(被称作一种端对端(end to end)协议,因为)协议,因为它提供一个直接从一台计算机上的应用进程到另它提供一个直接从一台计算机上的应用进程到另一远程计算机上的应用进程的连接。一远程计算机上的应用进程的连接。l应用进程能请求TCP构造一个连接,通过这个连接发送和接收数据,以及关闭连接。l由TCP提供的连接叫做虚连接(VC),虚连接是由软件实现的。底层的因特网系统并不对连接提供硬件或软件支持,只是两台机器上的TCP软件模块通过交换消息来实现连接的虚拟。3.TCP利用利用IP数据报实现了端对端的传输服务数据报实现了端对端的传输服务第一页 最后一页吉林大学软件学院吉林大学软件学院图
30、图1.8 TCP是一个端到端的传输协议是一个端到端的传输协议 第一页 最后一页吉林大学软件学院吉林大学软件学院l从从TCP角度来看,整个角度来看,整个Internet是一个通信系统,是一个通信系统,能够接收和传递消息,而不会改变和干预消息的能够接收和传递消息,而不会改变和干预消息的内容。内容。4三次握手三次握手l为确保连接的建立和终止都是可靠的,TCP使用三次握手(3-wayhandshake)的方式来建立连接图图1.9 TCP的三次握手过程的三次握手过程 第一页 最后一页吉林大学软件学院吉林大学软件学院l已证明:三次握手是在包丢失、重复和延迟的情已证明:三次握手是在包丢失、重复和延迟的情况下
31、确保非模糊协定的充要条件。况下确保非模糊协定的充要条件。l如图所示,前两个被称为SYN段。lTCP会重发丢失的SYN段。l三次握手确保TCP不会打开或关闭一个连接,直到两端达成一致。l创建一个连接的三次握手中,要求每一端产生一个随机32位序列号。l在计算机重启后,尝试建立一个新的TCP连接时,要选择一个新的随机数,可保证不受老连接的重复或延迟包的影响。第一页 最后一页吉林大学软件学院吉林大学软件学院1.2.1基于TCP/IP协议栈的网络编程l l最最最最基基基基本本本本的的的的网网网网络络络络编编编编程程程程方方方方式式式式,主主要要是是使使用用各各种种编编程程语语言言,利利用用操操作作系系统
32、统提提供供的的套套接接字字网网络络编编程程接接口口,直接开发各种网络应用程序。直接开发各种网络应用程序。l本门课程主要讲解这种网络编程的相关技术。本门课程主要讲解这种网络编程的相关技术。l直接利用网络协议栈提供的服务来实现网络应用,层次比较低,编程者自由度经较大,在利用套接字实现了网络进程通信以后,可以编写各种网络应用程序。l需掌握套接字网络编程接口及应用层网络协议1.2 三类网络编程三类网络编程第一页 最后一页吉林大学软件学院吉林大学软件学院1.2.2 基于基于WWW应用的网络编程应用的网络编程l WWW称为万维网或称为万维网或Web,是因特网上最广泛的,是因特网上最广泛的应用。应用。l 基
33、于基于WWW应用的网络编程技术,包括:应用的网络编程技术,包括:l所见即所得的静态网页制作;lHTML、JavaScript等。l动态服务器页面的制作。lASP、PHP、JSP、J2EE、Hibernate、Spring、Struts等技术。第一页 最后一页吉林大学软件学院吉林大学软件学院1关于关于.NET平台平台l微微软软公公司司在在2000年年7月月公公布布的的,是是一一个个全全新新的的开开发发框框架架,集集成成了了微微软软20世世纪纪90年年代代后后期期的的许许多多技技术术,如如COM+组组件件技技术术、ASP Web开开发发框框架架、XML和和OOP面向对象设计等。面向对象设计等。l.
34、NET支支持持新新的的Web服服务务协协议议,如如简简单单对对象象访访问问协协议议(SOAP),Web服服务务描描述述语语言言(WSDL),统统一一描描述述、发发现现和和集集成成规规范范(UDDI),以以及及以以Internet为中心的理念。为中心的理念。1.2.3 基于基于.NET框架的框架的Web Services网络编程网络编程第一页 最后一页吉林大学软件学院吉林大学软件学院(1).NET平台有四组产品平台有四组产品 开开发发工工具具:一组语言(C#和VB.NET)、一组开发工具(VisualStudio.NET)、一个综合类库(用于创建Web服务、Web应用程序和Windows应用程序
35、)、一个用于执行对象的公共语言运行环境(CLR)。专专用用服服务务器器:.NET企业级服务器,提供关系型数据存储。Web 服务。服务。设备设备:.NET驱动的数字化智能设备。驱动的数字化智能设备。第一页 最后一页吉林大学软件学院吉林大学软件学院(2)MS的的.NET策策略略是是使使软软件件成成为为一一种种服服务务,除除了了以以Web为为中中心心外外,还还顺顺应应了了软软件件工工业业的的趋趋势势,包包括括以下几个方面:以下几个方面:分布式计算分布式计算组件化组件化 企业级别的服务企业级别的服务WEB 范型转移范型转移 l这这些些都都有有助助于于互互操操作作性性、可可伸伸缩缩性性、易易得得性性、可
36、可管理性指标的实现。管理性指标的实现。第一页 最后一页吉林大学软件学院吉林大学软件学院(3).NET平台由三层软件构成平台由三层软件构成顶层是全新的开发工具顶层是全新的开发工具VS.NET:用于开发Web服务和其他应用程序,支持4种语言和跨语言调试的集成开发环境。中间层包括三部分:中间层包括三部分:l.NET服务器l.NET服务构件l.NET框架底层是底层是WINDOWS操作系统操作系统。第一页 最后一页吉林大学软件学院吉林大学软件学院(4).NET框架的设计要支持的目标框架的设计要支持的目标 简化组件的使用;简化组件的使用;实现语言的集成;实现语言的集成;支持支持Internet的互操作;的
37、互操作;简化软件的开发;简化软件的开发;简化组件的部署;简化组件的部署;提高可靠性;提高可靠性;提高安全性。提高安全性。第一页 最后一页吉林大学软件学院吉林大学软件学院2关于关于Web服务服务什什么么是是Web服服务务?Web服服务务是是松松散散耦耦合合的的可可复复用用的的软软件件模模块块,在在Internet上上发发布布后后,能能通通过过标标准准的的Internet 协议在程序中访问,具有以下的特点:协议在程序中访问,具有以下的特点:(1)可复用;)可复用;(2)松散耦合;)松散耦合;(3)封装了离散;)封装了离散;(4)Web服务可以在程序中访问;服务可以在程序中访问;(5)Web服务在服
38、务在Internet上发布。上发布。第一页 最后一页吉林大学软件学院吉林大学软件学院lWeb服务用发现机制来定位服务服务用发现机制来定位服务,实现松散耦合。实现松散耦合。lWeb服服务务发发现现,是是定定位位或或发发现现特特定定的的Web服服务务文文档档的的过过程程,文文档档用用Web服服务务描描述述语语言言(WSDL)来描述。来描述。lWeb服务发现通过.disco文件实现,当一个Web服务出现后,为之发布一个.disco文件,是一个XML文档,其中包括指向描述Web服务的其他信息资源的链接。l程序可以动态的使用这些链接获取说明文档,最终得知Web服务的详细信息。第一页 最后一页吉林大学软件
39、学院吉林大学软件学院lWeb服务的基本结构:服务的基本结构:lWeb服服务务目目录录,发布Web服务提供者能够提供的Web服务,供客户查找;lWeb服服务务发发现现,统一描述、发现和集成规范UDDI定义了一种发布和发现Web服务相关信息的标准方法;lWeb服服务务描描述述,Web服务的基本结构建立在通过基于XML的消息进行通信的基础上,而消息必须遵守Web服务描述的约定,是一个用WSDL表示的XML文档,定义Web服务可以理解的消息格式。第一页 最后一页吉林大学软件学院吉林大学软件学院lWeb服服务务建建立立在在3个个角角色色的的交交互互上上,交交互互的的内内容容包包括括3个操作。个操作。l3
40、个角色:个角色:服务的提供者、注册处和请求者;服务的提供者、注册处和请求者;l3个操作:个操作:发布、查找和绑定。发布、查找和绑定。l这这些些角角色色和和操操作作都都围围绕绕Web服服务务本本身身和和服服务务说说明明两个产品展开。两个产品展开。第一页 最后一页吉林大学软件学院吉林大学软件学院l Web服务的运行机理:服务的运行机理:l服务提供者有一个可以通过网络访问的软件模块,即Web服务的实现,并为此Web服务定义了服务描述,并把它发布给服务的请求者或服务的注册处;l服务请求者用查找操作从本地或注册处得到服务描述,并使用描述中的信息与服务提供者实现绑定,然后与Web服务交互,调用其中的操作。
41、l服务提供者和服务请求者是Web服务的逻辑基础,一个Web服务即可以是提供者也可以是请求者。第一页 最后一页吉林大学软件学院吉林大学软件学院l服务提供者服务提供者l从商业的角度来说是服务的拥有者,从Web服务的架构来说是拥有服务的平台;l服务请求者服务请求者l是需要某种功能的商业机构,从商业的角度来说是查找调用服务的应用程序,包括人使用的浏览器,或无用户界面的应用程序。l服务注册处服务注册处l从Web服务的架构来说是供服务提供者发布服务描述的地方,供请求者找到服务以及与服务绑定的信息,包括开发时的静态绑定和运行时的动态绑定。第一页 最后一页吉林大学软件学院吉林大学软件学院lWeb服务开发的生命
42、周期,包括服务开发的生命周期,包括4个阶段:个阶段:l创创建建,开发测试Web服务的实现,包括服务接口描述的定义和服务实现描述的定义;l安安装装,把服务接口和服务实现的定义发布到服务请求者或服务注册处,把服务的可执行程序放到Web服务器的可执行环境中;l运运行行,Web服务等待调用请求,被不同的请求者通过网络访问或调用,服务请求者此时可以查找或绑定操作。l管管理理,对Web服务应用程序进行监督、检查和控制,包括安全性、性能和服务质量管理等。第一页 最后一页吉林大学软件学院吉林大学软件学院l本节着重于因特网上的高级服务,以及提供这些本节着重于因特网上的高级服务,以及提供这些服务的应用软件。服务的
43、应用软件。l讨论网络应用软件的客户讨论网络应用软件的客户/服务器交互模式,并服务器交互模式,并说明网络协议操作的方式为什么需要这种模式。说明网络协议操作的方式为什么需要这种模式。l这是构筑所有网络应用的基础。这是构筑所有网络应用的基础。1.3 客户客户/服务器交互模式服务器交互模式第一页 最后一页吉林大学软件学院吉林大学软件学院1.3.1 网络应用软件的地位和功能网络应用软件的地位和功能l因特网仅仅提供一个通用的通信构架,它只负责因特网仅仅提供一个通用的通信构架,它只负责传送信息。而对于信息传过去干什么用?利用因传送信息。而对于信息传过去干什么用?利用因特网究竟提供什么服务?由哪些计算机来运行
44、这特网究竟提供什么服务?由哪些计算机来运行这些服务?如何确定服务的存在?如何使用这些服些服务?如何确定服务的存在?如何使用这些服务等等问题?都要由应用软件和用户解决。务等等问题?都要由应用软件和用户解决。l计算机能够利用因特网提供什么服务?何时启动计算机能够利用因特网提供什么服务?何时启动这些服务?都需要高层应用软件及用户决定。这些服务?都需要高层应用软件及用户决定。第一页 最后一页吉林大学软件学院吉林大学软件学院1.3.2 客户客户/服务器模式服务器模式l网络应用进程通信时,普遍采用客户网络应用进程通信时,普遍采用客户/服务器交互服务器交互模式,简称模式,简称C/S模式。模式。l这是因特网上
45、应用程序最常用的通信模式。这是因特网上应用程序最常用的通信模式。lC/S模式的建立基于以下两点:模式的建立基于以下两点:l客户与服务器之间的关系是非对等的,服务器提供资源,客户机请求共享这些资源;l网间进程通信是完全异步的,互相通信的进程间既不存在父子关系,又没有共享内存缓冲区,需要一种机制为二者间的数据交换提供同步.第一页 最后一页吉林大学软件学院吉林大学软件学院1、服务器的工作过程、服务器的工作过程lC/S模式过程中服务器处于被动服务的地位。模式过程中服务器处于被动服务的地位。l服务器要先启动,并根据客户请求提供相应服务:服务器要先启动,并根据客户请求提供相应服务:l打开一通信通道,并告知
46、服务器所在的主机,并愿意在某一公认的地址上(熟知知端口,如FTP为21)接收客户请求。l等待客户的请求到达该端口。l服务器接收到服务请求,处理该请求并发送应答信号。为了能并发地接收多个客户的服务请求,要激活一个新进程或新线程来处理这个客户请求(如UNIX系统中用fork、exec)。服务完成后,关闭此新进程与客户的通信链路并终止.l返回第二步,等待并处理另一客户请求。l在特定的情况下,关闭服务器。第一页 最后一页吉林大学软件学院吉林大学软件学院2、客户端的工作过程、客户端的工作过程l客户方采取的是主动请求方式:客户方采取的是主动请求方式:l打开一通信通道,并连接到服务器所在主机的特定监听端口。
47、l向服务器发送请求报文,等待并接收应答;继续提出请求,与服务器的会话按照应用协议进行。l请求结束后,关闭通信通道并终止。第一页 最后一页吉林大学软件学院吉林大学软件学院表表1.2 一些著名的网络应用一些著名的网络应用网络应用网络应用客户端软件客户端软件服务器软件服务器软件应用层协议应用层协议电子邮件电子邮件foxmail电子邮件服电子邮件服务器务器SMTP、Pop3文件传输文件传输cutFTP文件传输服文件传输服务器务器FTPWWW浏览浏览IE浏览器浏览器IIS服务器服务器HTTP第一页 最后一页吉林大学软件学院吉林大学软件学院l客户端软件的特点客户端软件的特点l服务器端软件的特点服务器端软件
48、的特点l基于因特网的基于因特网的C/S模式的应用程序的特点模式的应用程序的特点1.3.3 客户与服务器的特性客户与服务器的特性第一页 最后一页吉林大学软件学院吉林大学软件学院1客户端软件特点客户端软件特点在在进进行行网网络络通通信信时时临临时时成成为为客客户户,但但它它也也可可在在本地进行其他的计算。本地进行其他的计算。被被用用户户调调用用,只只为为一一个个会会话话运运行行。在在打打算算通通信信时主动向远地服务器发起通信。时主动向远地服务器发起通信。能能访访问问所所需需的的多多种种服服务务,但但在在某某一一时时刻刻只只能能与与一个远程服务器进行主动通信。一个远程服务器进行主动通信。主动地启动与
49、服务器的通信。主动地启动与服务器的通信。在在用用户户的的计计算算机机上上运运行行,不不需需要要特特殊殊的的硬硬件件和和很复杂的操作系统。很复杂的操作系统。第一页 最后一页吉林大学软件学院吉林大学软件学院2 2服务器软件的特点服务器软件的特点是是一一种种专专门门用用来来提提供供某某种种服服务务的的程程序序,可可同同时时处处理多个远地客户的请求。理多个远地客户的请求。当当系系统统启启动动时时即即自自动动调调用用,并并且且连连续续运运行行着着,不不断地为多个会话服务。断地为多个会话服务。接接受受来来自自任任何何客客户户的的通通信信请请求求,但但只只提提供供一一种种服服务。务。被动地等待并接受来自多个
50、远端客户的通信请求。被动地等待并接受来自多个远端客户的通信请求。在在共共享享计计算算机机上上运运行行,一一般般需需要要强强大大的的硬硬件件和和高高级的操作系统支持。级的操作系统支持。第一页 最后一页吉林大学软件学院吉林大学软件学院3 3基于因特网的基于因特网的C/SC/S模式的应用程序的特点模式的应用程序的特点客客户户和和服服务务器器都都是是软软件件进进程程,C/S模式是网络上通过进程通信建立分布式应用的常用模型。非非对对称称性性:服务器通过网络提供服务,客户通过网络使用服务,这种不对称性体现在软件结构和工作过程上。对等性:对等性:客户和服务器必有一套共识的约定,必与以某种应用层协议相联,并且