网络应用编程
1、 分散式
在分散式系统中,用户只负责管理自己的计算机系统,各自独立的系统之间没有资源或信息的交换或共享。这种模型由于存在大量共享数据的重复存储,除了引起数据冗余之外,也很容易导致一个企业组织内各部门数据的不一致性,同时还会造成硬件、支持和运营维护等成本的大量增加,因此早被淘汰。 2、 集中式
在集中式环境中,用一台主计算机保存一个企业住址的全部数据,而用户则通过终端连接到这台主计算机系统并与之通信,从而达到访问数据的目的。终端是包含键盘和显示器的端设备,通过通信链路发送和接收数据。
集中式的优点是所有运作和管理处于单个部门的主持语控制之下,硬件成本低。另外,由于资源集中,即促进和方便了用户间的数据共享,有减小或消除了数据的冗余与不一致性,
3、 分布式
分布式系统是分散式系统和集中式系统的混合,它由一个又一个连接起来的独立计算机组成。分布式系统与计算机网络的主要区别是,分布式环境中资源以透明的方式供用户使用。
4、TCP/IP网络协议
TCP/IP 参考模型采用4层的层级结构。这4层分别是:应用层、传输层、网际层和网络接口层。
应用层:该层负责应用程序之间的沟通、主要协议有简单邮件传输协议(SMTP)、文件传输协议(FTP)以及网络远程访问协议(Telnet)等。
传输层:该层提供结点间的数据传送以及应用程序之间的通信服务,主要功能是数据格式化、数据确认和丢失重传等。
网际层:该层负责提供基本的数据封包传送功能,让每一块数据报都能够到达目的主机,但它不检查数据包是否被正确接收。
网络接口层:该层负责接收 IP数据报并进行传输,从网络上接收物理帧,抽取IP数据报转交给下一层,对实际的网络媒体进行管理,定义如何使用实际网络来传送数据。
5、进程进程
进程管理与多线程编程技术是网络开发必备的基本技术之一。进程是对一段静态指令序列(程序)的动态执行过程。任何一个C#程序都有一个默认的线程,该线程称为主线程。主线程执行程序中Main方法中的代码。主线程之外的其他线程称为辅助线程。辅助线程用于执行耗时的任务或时间要求紧迫的任务。为什么要引入多线程的概念呢?在Client/Server模式下,服务器需要不断监听来自多个客户端的请求,这时,如果采用单线程机制的话,这个线程由于要不断的循环监听客户端的请求,从而无暇处理其他的任务。
5、前台线程与后台线程
后台线程与前台线程类似,区别是后台线程不会影响进程终止。当属于某一个进程的所有前台线程都终止后,公共语言运行库就会结束该进程,而且所有属于该进程的后台线程也都会立即停止,而不管其后台工作是否完成。属于托管线程池的线程都是后台线程,通过创建并启动新的Thread对象而生成的线程都是前台线程。
6、线程同步
同步:是指多个线程之间存在先后执行顺序的关联关系。
7、线程池
线程池是在后台执行多个任务的线程集合。一般在服务器端应用程序中使用线程池接收客户端传入的请求,每个传入请求都分配给线程池中的一个线程,从而达到异步处理请求的目的。线程池不会占用主线程,也不会延迟后续请求的处理。每个进程都有一个线程池。线程池的默认大小为每个可用处理器有25个线程。
8、域名解析
将域名转换为对应 IP地址的过程称为域名解析。
9、网络数据编码与解码
字符信息在网络中的传输室先转换成一个字节序列后才能在网络中传输。将字符序列转换为你字符序列的过程称为编码。当这些字节传送到网络的接收方时,接收方需要反过来将字节序列再转换为字符序列,这种过程称为编码。10、套接字
套接字是支持 TCP/IP 网络通信的基本操作单元。可以将套接字看做不同主机间的进程进行双向通信的端点,在一个双方可以通信的套接字实例中,即保存了本机的IP地址和端口,也保存了对方的IP地址和端口,同时也保存了双方通信采用的协议等信息。套接字有三种不同的类型:流套接字、数据报套接字和原始套接字。流套接字用来实现面向连接的TCP通信,数据报套接字实现无连接耳朵额UDP通信,原始套接字实现IP数据包通信。
11、数据流
数据流是对串行传输数据的一种抽象表示。
12、端口
IP 地址仅仅能够具体标识到某台主机,而不能标识某台计算机上的进程。如果要标识具体的进程,需要引入新的地址空间,这就是端口。
在网络技术中,端口有两种含义:一是指物理意义上的端口;二是指逻辑意义上的端口,即进程标识。13、数据流
数据流是对串行传输数据的一种抽象表示。写入:将数据从内存缓冲区传输到外部源。读取:将数据从外部源传输到内存缓冲区。查找:重新设置流的当前位置,以便随机读写。需要注意的是,并不是所有的流类型都能够支持查找,如网络流没有当前位置的概念,因此不支持查找功能。
14、内存流
和文件流不同,MemoryStream类表示的是保存在内存中的数据流,有内存流封装的数据可以在内存中直接访问。内存流一般用于暂时缓存数据以将低应用程序中对临时缓冲区和临时文件的需要。内存流相对于字节数组而言,具有流特有的特性,并且容量可自动增长。
15、TCP
客户端与服务器建立连接后,发送方需要先将要发送的数据转换为字节流,然后将其发送给对方。
TCP 最主要的特点如下:
(1) 是面向连接的传输层协议。
(2) 每个TCP连接只能有两个端点,而且只能一对一通信,不能一点多多点直接通信。
(3) 通过TCP连接传送的数据,能保证数据无差错、不丢失、不重复地准确到达接收方,并且保证各数据到达的顺序与数据发出的顺序相同。
(4) 数据以字节流的方式传输。(5) 传输的数据无消息边界。同步工作方式是指利用TCP编写的程序执行到发送、接收或监听语句是,在未完成工作前不再继续往下执行,即处于阻塞状态,知道该语句完成相应的工作后才继续执行下一条语句;异步工作方式是指程序执行大发送、接收或监听语句时,不论工作是否完成,都会继续往下执行
16、TCP应用编程的一般步骤
1、使用对套接字封装后的类,编写基于TCP的服务器程序的一般步骤:
(1)创建一个TcpListener对象,然后调用该对象的Start方法在指定的端口进行监听。(2)在单独的线程中,循环调用AccessTcpClient方法接收客户端的连接请求,并根据该方法的返回的结果得到与该客户端对应的TcpClient对象。
(3)每得到一个新的TcpClient对象,就创建一个与该客户对应的线程,在线程中与对应的客户进行通信。
(4)根据传送信息的情况确定是否关闭与客户的连接。
17、编写客户端程序的一般步骤
使用对套接字封装后的类,编写基于TCP的客户端程序的一般步骤如下:
(1) 利用TcpClient的构造函数创建一个TcpClient对象。
(2) 使用Connect方法与服务器建立连接。
(3) 利用TcpClient对象的GetStream方法得到网络流,然后利用该网络流与服务器进行数据传输。
(4) 创建一个线程监听指定的端口,循环接收并处理服务器发送过来的信息。
(5) 完成工作后,向服务区发送关闭信息,并关闭与服务器的连接。18、TCP的无消息边界问题
解决 TCP 消息边界问题有以下3中方法: 1、发送固定长度的消息
2、将消息长度与消息一起发送
3、使用特殊标记分隔消息