【编程漫谈】单机与联机

应用程序一般可以分为单机和联机两种类型,单机程序就是在终端设备上可以独立运行的程序,只要打开这个程序就可以提供完整的功能,比如微软的office、一些单机游戏等。而联机程序则分为多个部分,分别运行在不同的机器上,然后通过网络形成一个整体,联机程序包括客户端和服务端两部分,这两端通过既定的数据格式进行通讯,也就是所谓的协议,一般客户端提供用户界面,服务端负责存储和运算。

早些年网络不发达的时候,应用程序基本上单机的,也就说可能windows下边的一个Exe就是整个应用了,最多结合一些文件型数据库,像Access、Sqlite等等,这种应用程序某种程度上来,只是将以前的纸质的东西进行了电子化,本质上没有多少的改变,无非就是节省了一些纸墨,如果工作过程中产生了一些需要周转的文档,那就得导出可阅读的格式,通过一些可移动存储设备进行转移,比如软件、U盘、移动硬盘或是刻成光盘等。

随着信息化程度的提高,这种单机作业的模式,越来越不符合企业的需求,首先,信息的同步很成问题。以前还是用纸传递信息的时候,还可以保证纸张的唯一性,从而可以保证信息的完整性和可靠,通过笔记、印章之类的手段确保纸质信息的合法性。而电子化之后,信息可以随意的复制和修改,这样就不能保证多个副本之间的数据同步,前边刚拟了一份合同,拿去给领导审核,可还没等批复,这边发现有个金额写错了,于是本地改掉了,而磁盘上的依然是错的。

所以在有了网络之后,人们更倾向于通过网络来传输信息,这样可以尽可能及时地将最新的东西传给对方。为了控制副本的同步,通常会建立一个中心服务器,最新的资源全部放到服务器上边,这样所有可以访问的用户,可以通过服务器拿到最终稳定的信息,而且大家的信息来源是一同处,这样就保证了大家所看到的内容是一至的。

不过,联机程序依然存在同步的问题。之前单机程序也就一个人在操作,如果应用程序限制了信息的复制,这样的话就不会产生副本的问题,也因为一个人操作,所以信息修改也是线性的,也就是按时间顺序进行编辑或修改,但联机之后就不一样了,虽然服务器是独立唯一的,服务器上也可以保证只保留一个副本,但客户端是独立的,每个客户端都可以得到一个副本,然后各处独立的进行修改,这样的话,就会产生冲突了,究竟按谁的为准?

早期为处理冲突的问题,一般在服务端作事务处理。所谓事务,就像一个船闸一样,谁先来了谁就先处理,进来之后,将闸门一关,等处理完了再进行下一个处理,如果路途出现了问题,可以先撤销,打开闸门,退出去,让下一个进来。这样的一个过程,就叫事务处理。闸门就是一把锁,将其它信息先锁在外边,以防产生干拢,这就叫做事务锁。

早期的事务在数据库上应用得比较多,信息化的早期的应用就是数据的分享,那时候的服务端主要以数据库系统为主,为了保证数据记录的唯一性和可靠,在数据读写操作的时候,为了保证每个客户端的信息同步,于是便有了事务这一概念。其实事务的作用就是把并必的请求进行线性化,以确保每个人的何改都必须建立前一个人基础之上,而不是前一个人改了一半,你这边改了另一半,这样就会乱套。

联机应用普及之后,单机程序就比较少了,甚至现在游戏也都是以网络游戏为主了。联机程序的复杂度也比单机程序复杂很多,比如前边所说的同步问题,联机程序要多一道这样处理子程序,前边提到过和数据库事务,但实际过程中,光事务还是不够的,有时候数据存储未必能保证放在一个地方,比如有些生产环境里,用的可能不止一个系统,多个系统间还要进行数据同步处理,这就不是事务那简单了,可能要这些系统的前边增加一个集成服务,先统一数据进出口,然后给传送的数据加上数字签名,以保证信息在传输过程不被篡改,且是唯一的。

还有,联机应用多了一层网络用于传输,这样就不能保证在传输过程信息是不是会丢掉,如果断网了,你还得有检测机制,确保传输成功,如果不成功还需要进行重新发送。这又多了一层处理信息可靠性的子程序,好在有许多第三的组件可以直接拿来使用,比如消息队列。另外,还要考虑网络传输安全性的问题,这些在网络的传输的信息,就像走在路上的汽车,随时都可被拦截,黑客可以将拦截的数据进行修改,然后再发出去,这就存在危险了。为了防范这种问题,那就要对网络传输进行加密,让拦截的人看不懂,于是又多了一层安全处理的子程序。

总之,联机程序要比单机复杂很多。随着技术的发展,越来越多的设备接入到了网络,平常我们比较熟悉的手机、平板等,实际上还有一些传感设备,嵌入设备等,但这些都是传统意义上的客户端,它们通过网络传递各自的信息。虽然以后的工作生活更加依赖联机应用,也不是说单机程序就没了市场,有些系统要求联机脱机都能运行的,有网的时候他就是个联机程序,没网的时候他就是个单机程序。无论单机还是联机,最终都是为人服务,根据具体的需求,确定自己所需要的程序类型。

原文地址:https://www.cnblogs.com/icoolno1/p/11528076.html