逐步实现TCP服务端Step04-4:令Control更抽象

直接继承自Control的NControl和SControl代表了两种主控类,一种专注于通信,另一种则不需要通信。对专注于通信的类而言,Recover功能并非必要,不支持通信的主控类因不与client直连,可在client无感的情况下重启进程,此时的Recover功能是必要的。要实现Recover,主控类就需要构建在一块共享内存之上。

简单地说,在Control的基础之上,NControl要实现一套与通信相关的方法及属性且不需要SharedMemory属性,SControl需要SharedMemory属性,与通信相关的内容一律不要。

按照目前的设计,假设NControl自己实现了一个用于通信的方法,若想通过g_ncontrol直接调用到该方法的话 ...


逐步实现TCP服务端Step04-3:封装netio主逻辑

之前对代码做整理封装的时候,并没过多地考虑netio,当时的关注点在s上,只对s做了封装,现在对netio做类似的处理。

s与netio的主逻辑中有不少类似的地方,如使用共享内存,操作c2s_code_queue和s2c_code_queue等等。这些基础操作应被整合在Control类中,由于Control这个名字在处理s的时候已被使用,这里需要改下名字,将对应于s的Control类改为SControl,对应于netio的Control类命名为NControl,而Control则为它们共同的父类。

无论s还是netio,大流程可概括为三步:初始化 ...


Python的日常:类

Python中一切皆对象,因此类也是对象,叫“类对象”,类的实例就是对象的对象,叫做“实例对象”。

定义类的一般形式:

self用于指定当前实例,假设类ClassA的实例为a,那么基于实例a调用某个方法,如a ...


基于对象与面向对象

基于对象(Object-Based):以对象作为基本单位,但对象之间并不会发生关系。一个基于对象构建的系统就像是一系列孤立对象的集合体 ...


逐步实现TCP服务端Step03-15:小结

这是一个里程碑,到目前为止,基本的构件都已实现,为下一步的扩展打下了基础。

所谓的“扩展”是指把对单个客户的服务扩展为对n个客户,目前这个版本只针对一个客户。

再明确一下目标,我们要实现的是一个暂时不关注具体业务的基于TCP连接的后端系统。所谓的“不关注具体业务”,就是说要做的“抽象”一些。它更像是一个骨架,如果需要的话,可以把具体的业务逻辑填充进去 ...


逐步实现TCP服务端Step03:整理、封装

经逐步改进,当前的后台程序的形式为两个进程,一个负责通信,另一个负责处理业务。二者基于共享内存机制通信。这两个进程均为单线程。

这些实现都是使用面向过程的方式,到处散布着全局变量(如用于接收和投递的buffer)和全局函数。目前,程序所处理的仅仅是单个客户的情况 ...