前景
首先,我们从项目整体需求上思考。 我们需要一个用户,一个管理员,一个电影,一个公告,还需要一个人来记录,五个角色产生了。 这里管理员和用户只是用户站在不同角度,上传或者下载,或者设定自己的电影的付费需求,之间功能一般无二,整理为一个user角色。 这里其实可以应用面向对象的思想,如:用户的事情用户解决,注册登录;管理员亦是如此;电影的事情电影解决:存取;公告的事情公告解决。 由此,我们有了四个角色,user,movie,notice,download_record。
ORM
我们四个角色想要操控数据,那么就需要一个orm orm是什么?是我们用来操控数据库的工具。 其实就是将pymysql的指令封装,我们传参给pymysql,它来干事。那么就很好理解了,我们用字典完成映射关系,我们用元类管理条件筛选,判断是否有一个映射中的对象的primary_key为True,这样一来完成了角色对象Model的创建。 我们去通过传参给pymysql的功能,封装我们的select,update,save功能,这样一来,我们万事俱备只欠东风。
逻辑层
关于用户端,我们需要输入层,这里是给用户看的,然后在我们的tcpclient里面完成我们有关tcp协议链接的需求,去完成链接,在服务端亦是如此,两个功能完成了链接。 然后就是我们的用户输入层,需要一个主视图,用户界面,管理员界面,这个相信很好理解。 我们把数据传送给服务端,还是那句话,数据传输的事情我们交给tcpserver,我们在其中写方法去完成我们的线程池多线程链接,然后交给我们的接口层完成逻辑的处理和数据的处理。 在这里,我们有三个接口,比如用户和管理员都有登录,那么我们放到common_interface中,其他的单独的功能,我们放到各自的接口中,完成我们对功能的复用,使我们的代码更简练。 common的作用也是如此,比如发送字典,我们中间对字典数据的处理完全可以复用,我们就写成一个功能放到common中,这一点,我们很熟悉,因为诸如对数据的加密,以及完成session中,我们都可以多次复用方法,我们就写到common中。 总的来说,我们的common_interface是对多个对象的共同接口的复用,common是对整个程序中会多次使用的功能的复用。由此,我们需要的配置参数,写到setting中。
最后
有关于session状态的保存,我们服务端启动一开始导入,这样每次服务端启动就是空,我们就能每一次登录去记录,也不怕下次启动服务器会导致上一次的数据没有清理。 有关于互斥锁,我们也是通过这个中间的模块文件py去完成我们在整个程序中对它的调用,避免了多次传参,让我们的代码可读性和简洁性,可扩展性都有了显著的提升。 我们的优酷项目的框架就结束了。
原文:https://www.cnblogs.com/tyler-bog/p/10909042.html