前景
首先,咱們從項目總體需求上思考。 咱們須要一個用戶,一個管理員,一個電影,一個公告,還須要一我的來記錄,五個角色產生了。 這裏管理員和用戶只是用戶站在不一樣角度,上傳或者下載,或者設定本身的電影的付費需求,之間功能通常無二,整理爲一個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去完成咱們在整個程序中對它的調用,避免了屢次傳參,讓咱們的代碼可讀性和簡潔性,可擴展性都有了顯著的提高。 咱們的優酷項目的框架就結束了。