架构设计思考
一个大项目需要有人做全局的架构设计,也就是需要所谓的架构师,通过几个项目的历练,现对架构的设计做一些思考的整理。
一、架构设计要做的事情
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
今日推荐
周排行