架构设计思考

架构设计思考
    一个大项目需要有人做全局的架构设计,也就是需要所谓的架构师,通过几个项目的历练,现对架构的设计做一些思考的整理。
一、架构设计要做的事情
    1、横向切分抽象的层次和功能间的依赖关系,假设实现语言是java,产出可能是子工程、包名、子包名、接口名等。这一部分也涉及到选用哪些开源的组件或代码
    2、纵向的切分子系统、子模块、服务等
    3、各个部分间的交互和解耦,包括service层面的,也包括一个子系统内部的
二、客户端包括哪些可交互的东西
    touch等硬件事件、UI和效果、timer等时间相关的逻辑、logic系统、model、网络交互
三、客户端几部分之间的交互和设计
    MVC分离:硬件事件和UI交互(如果os已经封装好了控件很简单、如果没有封装好,需要自己设计event系统);UI被动刷新,是logic的观察者和反应者;logic(一般是单例或static函数)由timer、网络和UI(比如是否看过等UI上面的逻辑)驱动;timer和网络自我驱动,并分发事件;model为logic服务,提供cache、序列化、反序列化、加解密、持久化等服务;实际上核心就是一个观察者模式
四、android客户端的横向切分
    1、基础功能
        common
        common.nio
        common.log
        common.compression
        common.security
        common.security.md5
        common.security.rsa
        common.security.des
            .
            .
            .
    2、服务封装
        service.net
            NetworkState isWIFIConnected之类的
        service.http
            AsyncWWW等,可以考虑 loopj框架
        service.asyncIO
        service.cache
            MediaScanner
            DiskLruCache
            CacheManager
        service.webview
        service.versioncontrol
            SOManager
        service.sdk
        service.sdk.share
        service.sdk.share.weixin
        service.sdk.share.weibo       
        service.sdk.pay
        service.sdk.pay.alipay
        service.sdk.push
        service.sdk.push.baidu
        service.sdk.login
        service.statistics
            Device
    3、某一类app具有的服务,如视频app需要的服务
        service.video.nativeplayer
        service.video.ad
        service.video.p2p
        service.video.thumbnailer
        service.video.subtitle
        service.video.danmaku
        service.video.drm
        service.video.grey
    4、app的mvc架构
        frame
    5、具体的app实现
        app
        app.base
            BaseActivity
            ActivityManager
            BaseActivityLogic
        app.impl.models
        app.impl.logicSystem
        app.impl.service
        app.impl.api
        app.impl.api.net
            HttpClient
            MsgFactory
        app.impl.ui
        app.impl.ui.fragment
        app.impl.ui.animation
        app.impl.ui.activity
        app.impl.ui.adapter
        app.impl.ui.custom
        app.impl.ui.custom.control
        app.impl.ui.custom.view
            AsyncImageView
        app.impl.ui.custom.layout

五、服务端包括哪些东西
    数据持久化、cache、model、logic、网络框架和异步IO、timer
六、服务端几部分之间的交互
    持久化、cache为model服务;网络和timer驱动logic;一般server会切分为service,service内部都是事件回调的触发logic,logic基于model等实现所谓的逻辑
七、基于TCP的服务端横向切分
    1、基础封装
        common
        common.nio
        common.log
        common.compression
        common.security
        common.security.md5
        common.security.rsa
        common.security.des
        common.executer
        common.tcpPool
        common.scheduler
        common.asyncIO
        common.IDGenerator
        common.route
        common.timer
    2、服务和组件的封装
        component.netty
            AsyncTcp
        component.redis
        component.redis.connectionPool
        component.mysql
        component.mysql.connectionPool
        component.load
        component.config
        component.bootstrap
        component.loadbalance
        component.heartbeat
        component.sql
        component.rpc
    3、基础聚合
        base.app
        base.service
    4、具体服务的实现
        app
        app.base
        app.impl
        app.impl.subsystem

猜你喜欢

转载自eric-weitm.iteye.com/blog/2290795