开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程:海量用户通讯系统——服务端结构改进1】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/626/detail/9803
海量用户通讯系统——服务端结构改进1
内容介绍
一.服务端改进原因
二.如何写出程序框架图
一.服务端改进原因
接着上一章节学习的内容,在完成登录并提示相关信息后,用户可以与服务器进行交互,服务器会携程根据所发的不同类型的消息,用不同的方法进行处理。要去想一个程序结构的改进,前面的程序完成了固定登陆,就是指定用户名和密码的登录,但是没有结构。没有结构的意思就是采取流水账的形式,把所有的代码登记上去。但这样操作后面的功能就基本上写不动了,因为把所有的事情都放在一个文件里面了。对于一个没有结构的项目来说,写到后面想再加一点功能,基本上都加不进去,甚至可读性很差,扩展性、维护性都比较差,因此需要对程序的结构进行改进。
改进涉及到两个问题,如果以前写的是BS开发,BS开发在浏览器这方面是不需要自己写的。如果像客户关系管理系统是单机版的,不涉及到服务器客户端就不用写,如果是单机版,没有服务器,只需写一个客户端。但是现在的结构是CS,既有客户端,又有服务器端,因此改进涉及到两方面,既要写服务器端,又要写客户端。所以代码的工作量无形中就比BS增加一倍。看起来是增加了一倍,但实际上它的复杂度肯定就要增加更多。因为它是网络传递,测试起来有时候还比较麻烦。因此首先画出框架图,然后根据框架图进行改进,先改进服务器端,然后再修改客户端,需要有一个步骤,最好不要两端同时写。
二.如何写出程序的框架图
1.先画出聊天室的服务器端的程序框架改进图。整个框架代表完整的服务器端,服务器端已经有了一个主文件 main.go。主文件有两个任务,一是监听,二是等待客户端的连接。他还可以去完成一些初始化的任务,因为今天还会用 release 的连接词做一些工作,这时有些初始化的工作可以让这个主函数帮完成,所以他还可以完成一些初始化的工作。主文件一旦接收到客户端的链接,他应该把事情应该交给另外一个文件去做。
2.第二个文件的名字叫做处理器 processor,这个文件类似于总的管家,采取的思想也类似于MVC的思想。控制器又叫处理器,处理器根据业务的不同将他们分散到小的控制器去完成,小的控制器又交给DIO完成,所以第一个文件与第二个文件是调用的关系。按这种思想建立第三个处理器user process. go,首先认为将来一定会出现这种控制器,一个控制器太过于单薄了,这种控制器专门处理用户的请求,例如用户的登录、注册和注销甚至用户列表的管理等等。
3.随着功能不断增加,可能会出现许多新的处理器,再建立一个新的处理器,叫做SMS process. go。在聊天室中一定会出现许多短消息。这个处理器专门处理和短消息相关的请求,包括群聊、点对点的聊天等。
这种模式就类似于现实中的模式,比如用户到来后首先到前台,前台将用户带进总调度室,总调度询问客户的需求,将客户带到业务经理或是销售经理的面前。
4.一般还会出现一个工具栏,叫做 utils.go。他把一些常用的工具函数结构体,并提供常用的方法。通用的方式无需单独拿出来形成一个处理器,只需将它们通用的方法和函数列成一个处理器即可。
5.common\message 服务器端与客户端通常还有一些共用的协议,这个协议有服务器与客户端共用的文件,例如 message.go
以上就是服务器端的改进思路,改进完服务器端后,才可以开始改进客户端。