プロジェクト分析のイミテーションYoukuのアーキテクチャフレームワーク

    1.优酷架构
        - Client
            - 用户视图层
            - 套接字客户端

        - Server
            - 套接字服务端
            - 接口层
            - 数据层
                - ORM
                - MySQL

    2.搭建项目目录
        - Client: 客户端
            - conf:
                - settings
            - core:
                - src:总视图
                    - admin 管理员视图
                    - user 普通用户视图
            - lib:
                common

            - socket_client
                - tcp_client: 建立连接

            - upload_movies  可上传电影的存放目录

            - download_movies 下载电影的存放目录

            - start.py: 客户端启动文件


        - Server: 服务端
            - conf:
                - settings
            - interface:
                - admin_interface: 管理员接口
                - user_interface: 普通用户接口
                - common_interface: 公共接口
                    该接口存放管理员与普通用户公用的接口。

            - db:
               - models: 存放 "数据表类" 也称之为“模型表”。
                    - User: 用户表
                        - u_id
                        - username
                        - password
                        - user_type: 用户类型
                        - is_vip: 是否是会员  0表示不是会员    1表示是会员
                        - register_time: 注册时间

                    - Movie: 电影表
                        - m_id: 电影id
                        - movie_name: 电影名字
                        - movie_size: 电影大小
                        - is_free: 0代表收费   1代表免费
                        - path: 电影存放目录
                        - upload_time: 电影上传时间
                        - u_id: 谁上传的--> 上传用户的ID

                        # 假设上传电影列表中有两个电影的名字一样,就能确保两个电影的数据一样么?
                        MD5: 摘要,MD5值是唯一的。
                            - 只要md5值一样,数据就一模一样。

                        - 比对两个电影是否一样:
                            - 打开两个电影,获取全部数据,通过MD5获取md5值。
                                - 浪费大量资源
                                - 效率很低

                            - 打开两个电影: 在电影数据的某些位置截取 小量 bytes数据(10)

                        - file_md5: 文件的md5值

                    - Notice: 公告表
                        - n_id
                        - title 公告标题
                        - content: 公告内容
                        - create_time: 发布时间
                        - u_id: 发布人ID

                    - DownloadRecord: 下载记录表
                        - d_id:
                        - m_id: 下载的电影
                        - u_id: 下载的用户ID
                        - download_time: 下载时间

            - lib:
                common

            - socket_client
                - tcp_client: 建立连接

            - upload_movies  可上传电影的存放目录

            - download_movies 下载电影的存放目录

            - start.py: 客户端启动文件

    3.tcp_server:
        - run():
            # 接收客户端的请求
            - 异步提交给working(conn, addr)

        - working(conn, addr):
            - 接收客户端发送的消息

            - 把addr添加到back_dic中,用来做存放session的key值
                - dispatcher(back_dic, conn)

            - 发现异常:
                通过addr清除session值

        - dispatcher(back_dic, conn):
            - 通过type调用对应的接口
                - func_dic: 存放所有的接口

                if type == '功能名字':
                    func_dic.get('功能名字')(back_dic, conn)

    4.管理员功能
        - 注册
        - 登录

    5.cookies, session
        cookies: 是一个存放在浏览器中文本协议,用于存放用户数据。

        session: 是一个存放在服务端的 随机字符串,用来做登录认证。
            可以给用户数据做加密,并且将session值返回给客户端,保证数据安全。

    6.登录认证装饰器
        - 应该在服务端做登录认证的处理
            - 客户端的数据有可能会被串改,所以在服务端进行认证。

        -


    1.管理员功能
        - 上传电影
        - 删除电影
        - 发布公公告

    2.普通用户功能
        - 注册
        - 登录
        - 查看视频
        - 下载视频
            - 免费
            - 收费
                - 草根用户
                    10块一部电影

                - VIP用户,打骨折
                    5块一部电影
        - 充值会员
        - 查看下载记录
        - 查看公告

おすすめ

転載: www.cnblogs.com/jinhongquan/p/11850063.html