
第一部分 C#网络程序开发基础
第1章 C#网络程序开发基础知识
1.1 网络通信模型及分类
1.1.1 分散式、集中式与分布式系统
为了网络通信的需要,人们经常需要对网络通信模型做一定的分析,为此,提出了各种参考模型。随着科技的进步,网络技术高速发展,网络的通信模型也在不断变化,但总体目标向着“简单明了”和“实用化”的方向发展。根据数据的通信方式,可以将通信模型分为分散式(Decentralized)系统、集中式(Centralized)系统和分布式(Distributed)系统三大类。
1. 分散式系统
在分散式系统中,用户只需负责管理自己的计算机系统,各自独立的系统之间没有资源或信息的交换或共享,由此引起大量共享数据的重复存储,造成数据冗余,容易导致共享的不同用户之间数据的不一致性,同时造成硬件的运营维护等成本大量增加。
2. 集中式系统
在集中式系统中,通过一台主计算机保存共享的全部数据,用户通过终端连接到这台主计算机进行数据访问。终端包含键盘和显示器,使用通信链路接收和发送数据。
集中式系统的优点是资源集中,硬件成本低,数据共享访问方便,减少或消除了数据的冗余与不一致。但它的主要缺点是可靠性不如分散式系统,一旦主机出现故障,整个系统都会瘫痪;另外,由于系统为所有用户共享,无法满足特殊用户的计算需要,系统响应较慢。
3. 分布式系统
分布式系统是集中式系统和分散式系统的混合,由多个连接起来的独立计算机组成。与计算机网络相比,分布式系统的资源以透明的形式供给用户使用,用户在使用资源时无须知道该资源是本地的还是远程的,对于远程资源也可以像本地资源一样任意调用,而计算机网络则需要先知道资源的位置,与资源所在的主机建立连接后才能使用;此外,分布式系统还具有高度的内聚性,每个数据库分布节点高度自治,有本地的数据库管理系统。分布式系统的著名例子是万维网(World Wide Web),在万维网中,所有的Web看起来就好像是放在一个主机上一样。
当然,分布式系统和计算机网络还是有相通的地方,多数分布式系统的建立是以计算机网络为基础的,所以分布式系统与计算机网络在物理结构上基本相同,它们的区别主要在软件层面。
1.1.2 C/S、B/S与P2P网络通信架构
1. C/S模型
C/S(Client/Server)模型也叫作C/S结构,即客户机/服务器结构,它是在分散式系统、集中式系统和分布式系统的基础之上发展出来的,当前的大多数通信网络都是这种模型。
C/S模型将一个网络事务处理分为两部分,一部分是客户端(Client),主要负责界面和处理业务逻辑,并为用户提供网络请求服务的接口,如数据查询请求;一部分是服务器端(Server),一般以数据处理能力较强的数据库管理系统作为后台,负责接收和处理用户对服务的请求,并将这些服务透明地提供给用户。C/S结构一般采用两层结构,如图1-1所示。

图1-1 C/S结构工作示意图
从程序实现角度来说,客户端和服务器端间的通信先由服务器端启动Server进程,然后等待客户端的请求服务;客户端启动Client进程向服务器申请服务。服务器处理完一个客户端请求信息后再继续等待其他客户端的请求,周而复始地以这样一种方式进行。
在这种结构中,服务器硬件需要足够强的处理能力,才能满足客户的要求。
C/S结构的技术较为成熟,其特点是交互性强,具有安全的存取模式,网络通信量低,响应速度快,利于处理大量的数据,可以充分利用两端硬件环境的优势,将任务合理分配到客户端和服务器端来实现,既适用于实际应用程序,又适用于统一的计算和处理。但是它也有缺点,即该结构的程序为针对性开发,不能灵活变更,维护和管理的难度比较大,通常只局限于小型局域网,不利于扩展。
2. B/S模型
B/S(Browse/Server)模型即浏览器/服务器模式,也叫B/S结构。它只安装维护一个服务器(Server),而客户端采用浏览器(Browse)运行软件。B/S结构是随着Internet技术的兴起,对C/S结构的变化和改进。它和C/S并没有本质区别,是C/S模型的一种特例,特殊在于这种模型必须使用HTTP(Hypertext Transfer Protocol,超文本传送协议)。
B/S结构采用的是三层客户机/服务器结构,在数据管理层(Server)和用户界面层(Client)增加了一层结构,称为中间件(Middleware),使整个体系分为三层。三层结构是伴随着中间件技术的成熟而兴起的,核心概念是利用中间件将应用分别表示为界面层、业务逻辑层和数据存储层3个不同的处理层,如图1-2所示。

图1-2 B/S结构工作示意图
中间件作为构造三层结构的基础平台,具有如下主要功能:负责客户机与服务器、服务器与数据库之间的连接和通信;实现应用与数据库之间的高效连接。具有中间件的三层结构在层与层之间相互独立,任一层的改变都不会影响其他层的功能。
在B/S体系结构系统中,用户通过浏览器向分布在网络上的许多服务器发出请求,服务器对浏览器的请求进行处理,将用户所需信息返回到浏览器。而其余的工作,如数据请求、加工、结果返回以及动态网页生成、对数据库的访问和应用程序的执行等,全部由服务器完成。可以看出,B/S结构相对于C/S结构是一个非常大的进步。
B/S结构的主要特点是分布性强、维护方便、开发简单且共享性强,如一台计算机可以访问任意一个Web服务器,用户只需要知道服务器的网址即可访问,不需要针对不同服务器分别提供专门的客户端软件。但B/S结构的缺点在于数据存在安全性问题,对服务器要求过高,数据传输慢,软件个性化特点明显降低,而且实现复杂的应用构造有较大困难。
综上所述,两种模式各有利弊。C/S结构适用于特定范围,如局域网;而B/S结构则可以弥补C/S结构在应用平台上的功能不足。从可扩展性和高灵活性显示,B/S结构将是未来的发展方向。
3. P2P模型
P2P(Peer-to-Peer)称为对等互连模型。在此环境中,网络上的各台主机具有相同的功能,无主从之分,任一台计算机都是既可当服务器,设定共享资源供网络中其他计算机使用,又可作为工作站。从程序实现来说,一个应用程序同时起到客户端和服务器的作用。目前,它是小型局域网常用的组网方式,其优点是配置容易,通信便利,成本低;缺点是可靠性不如C/S模型,易遭黑客攻击。