产品/技术框架

产品/技术框架

1 服务器端

1.1 LEMP

Linux + Nginx + MySQL(MariaDB) + PHP

1.2 Laravel

简洁、优雅的 PHP 开发框架

2 API接口

2.1 REST:Representational State Transfer

2.1.1 资源(Resources)

网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务。你可以用一个URI指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。

"上网",就是与互联网上一系列的"资源"互动,调用它的URI。

2.1.2 表现层(Representation)

"资源"具体呈现出来的形式

比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现,甚至可以采用二进制格式;图片可以用JPG格式表现,也可以用PNG格式表现。

2.1.3 状态转换(State Transfer)

访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,势必涉及到数据和状态的变化。

因此,如果客户端通过"某种手段"操作服务器,服务器端就会发生"状态转化",而这种转化是建立在表现层之上的。具体实例中的"某种手段",就是HTTP协议(里面四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源,PUT用来更新资源,DELETE用来删除资源。

2.1.4 总结一下RESTful架构:

(1)一个URI代表一种资源;

(2)客户端和服务器之间,传递的是这种资源的某种表现层;

(3)客户端通过“某种手段”,对服务器端资源进行操作,实现"状态转化"。

这是一组架构约束条件和原则,不是一种标准,不这么做你也可以完成任务,只不过你的接口得不到应有的好处.

3 Android端

3.1 Rxjava

用于多线程异步数据处理,是一种响应式编程,采取观察者模式(发布-订阅模式)。

流程:Observable-> Operator 1 -> Operator 2 -> Operator 3 -> Subscriber

  • Observable 发出一系列事件,他是事件的产生者;
  • Subscriber 负责处理事件,他是事件的消费者;
  • Operator 是对 Observable 发出的事件进行修改和变换;

若事件从产生到消费不需要其他处理,则可以省略掉中间的 Operator,从而流程变为 Observable->Subscriber;

Subscriber通常在主线程执行,所以原则上不要去处理太多的事务,而这些复杂的事务处理则交给 Operator。

3.2 EventBus

组件间通信。

与Rxjava一样基于观察者模式,在异步数据流处理时Rxjava更为强大,可选择其中之一进行开发,目前打算用Rxjava 处理异步数据流,用EventBus实现组件通信。

使用原因:当我们的项目越来越复杂,使用Intent、Handler、Broadcast进行模块间通信、模块与后台线程进行通信时,代码量大,而且高度耦合。

3.2.1 机制:

  • Event 事件。它可以是任意类型。
  • Subscriber 事件订阅者。在EventBus3.0之前我们必须定义以onEvent开头的那几个方法,分别是onEvent、onEventMainThread、onEventBackgroundThread和onEventAsync,而在3.0之后事件处理的方法名可以随意取,不过需要加上注解@subscribe(),并且指定线程模型,默认是POSTING。
  • Publisher事件的发布者。我们可以在任意线程里发布事件,一般情况下,使用EventBus.getDefault()就可以得到一个EventBus对象,然后再调用post(Object)方法即可。

3.2.2 四种线程模型:

POSTING (默认) 表示事件处理函数的线程跟发布事件的线程在同一个线程。

MAIN 表示事件处理函数的线程在主线程(UI)线程,因此在这里不能进行耗时操作。

BACKGROUND表示事件处理函数的线程在后台线程,因此不能进行UI操作。如果发布事件的线程是主线程(UI线程),那么事件处理函数将会开启一个后台线程,如果果发布事件的线程是在后台线程,那么事件处理函数就使用该线程。

ASYNC 表示无论事件发布的线程是哪一个,事件处理函数始终会新建一个子线程运行,同样不能进行UI操作。

3.3 OKHttp:网络请求。

get 方法/ post方法,可同步/异步,可传递Json对象。

3.4 fastjson:数据解析。

方便地使用json对象。

3.5 picasso:图片加载。

Android图形缓存库,允许应用程序无障碍图像加载。

posted @ 2018-03-19 21:38  软件工程第六组  阅读(428)  评论(0编辑  收藏  举报