以用户在obs控制台通过点击按钮上传对象为例,通过时序图说明:
下面对这几个概念做简要说明:
(1)view
**
视图层。用户看到的ui界面,一套系统可以有不同种类的view层,比如web端、pc端、手机端等,但一般对应一套model层,即内核层,view层不关心后台的业务逻辑,只关心怎么向用户展示。
(2)controller
**
控制层。负责接收客户的请求,调用service层的接口处理请求,将处理结果返回给view层用作展示,controller层的controller实体一般会解析url路径并分流请求具体走哪个业务逻辑接口,比如obs的各种被@Resource注解修饰的handler。对应obs的osc组件。
(3)service
**
逻辑层。controller层调用service层接口,service层接口调用dao层接口,返回结果也是这个调用链。service层是具体后台处理的业务逻辑,很多特性的实现编码也是在service层做的。对应obs的service层。
(4)dao
数据持久化层,data access object,一个容易想到的场景是把针对数据库的一些操作(比如sql语句)封装一下,让我们和数据库打交道看起来比较像和一个对象打交道,这个对象通常就是DAO,当我们操作这个对象的时候,这个对象会自动的产生SQL语句来和数据库打交道,而我们只需要和DAO打交道就可以了。对应obs的p层,提供一个append-only的plog接口,这个plog就是DAO。
model和dao网上看文章说是没有区分的,这一点待定。**
