Bootstrap

实战:电子书阅读器

## 问题背景

web开发成为了主流的编程模式,许多系统都采用web开发模式,譬如,电商系统、门户网站、新闻资讯、邮件系统、还有诸多千奇百怪的网页,这就是今天我们熟悉的互联网发展的结果。web开发具有简单、快捷、高效的特性,从而备受青睐。笔者在这里以电子书阅读器为例,针对电子书阅读器的各项功能提供一些简单的思路。

##几款电子书阅读器案例

### top5 起点中文网

以连载小说为主要阅读偏好的产品,受众为大众、青年等群体,功能齐全,完美契合了作家、客户的客观需求。

95fe69f6c84148d2be6a367c3eb5ea5d.png

 ### top4 网易云阅读

特色是提供了用户入驻的功能,满足了需要内容推广的用户。同时方便大众阅读海量图书。

563637fc536a44dda618f66183d1dad1.png

 ### top3 知网

海量论文下载、浏览的利器,满足了学者、终身学习者的资料搜索需求,其中epub阅读器相当出色。

1dec08fbf45c47d8a2c98c2a236b8e9b.webp

 ### top2 学习通

提供了期刊订阅,学习交流,上面有很多期刊的官网,能免费阅读书籍、论文和期刊

f7165defe5504249915272f7136ca127.png

 ### top1 微信读书

依托微信用户群体,为用户提供优质内容服务。

74c5c9b08df34f80a06ffbf7f0c373c2.jpeg

 ## 功能描述

满足用户可以阅读电子书,订阅专栏内容,还可以入驻。

这里将功能分为,基础功能和扩展功能。

### 基础功能

用户使用浏览器访问主页便阅读喜好的书籍。需要内容推广可以入驻。

### 扩展功能

喜好设置、专栏订阅。

## 详细设计

内部开发模块采用基础类+配置类+扩展类的分层耦合开发方式。基础类提供电子书的处理,配置类完成基础类需要的初始化参数,扩展类主要访问基础类并延伸拓展功能。用户请求模块则集成spring mvc,或者干脆不需要第三方开源库,采用老式Servlet。主要实现电子书阅读功能。

### 配置类

配置类完成基础类的初始化需要的参数。

1、页面设置

页面设置需指定页面大小,行高,间接高度等。

2、段落设置

段落设置应该指定间接高度、是否缩间等。

3、内容设置

内容设置应该指定字体设置、内容类型、内容格式等。

4、一些用户请求参数

获取内容的请求参数,其他参数

### 基础类

1、Context类

电子书上下文类,可以获取电子书的目录、章节、段落等资源。

2、Content类

内容提供器,提供指定的内容(标题、段落、图片)等资源。

3、Url类

统一资源定位器,Context类会根据用户请求参数决定Url,然后获取资源。

### 扩展类

1、ContentHandler类

内容处理类,根据用户请求参数生成配置类后,上下文类Context会根据配置信息,找到相应的资源,最后通过该类处理成静态页面,或是保存在服务端,同时返回给客服端。

2、Search类

根据Url直接获取相应的内容

### 核心方法

1、getUrl(settings)

该方法必须指定配置参数,返回一个资源链接

2、getContent(url)

通过资源链接获取内容

3、contentAdaper(content)

内容适配器

4、search(Url)

精准搜索

## 后期扩展

随着用户量的增长,需对内部开发模块不断的完善,这些完善方面包括以下几个量级

### 500活跃用户

这个量级不需要应用多线程,直接将内容转化为静态页面保存在服务端,做好复制备份,牺牲外部存储空间换取时间。

### 10000活跃用户

做内容分发,需要多线程,此时设计一个中转器,转移部分资源到其他端口,缓解中转器的压力。

## 开发维护

分配三个作业同时完成,即是用户请求模块的请求参数设计,内部开发模块的实现,与其他开源框架如spring mvc的集成使用。我们不管是使用servlet还是其他开源框架,内部开发模块都应该被独立出来,形成独立的jar。

### 用户请求参数规范

。。。。略

### 内部开发模块实现

。。。。略

### spring mvc集成使用

。。。。略

## 样例展示

## 结束语

完成开发任务前最需要的就是文档的编写,一个优秀的文档体现了清晰的思路和有效的表达能力,笔者由于技术、时间和资源的有限,不能写完全部的文档,暂时分享这些内容,下面附加一些内容阐释:

1、线程

线程是程序执行的最小单位,本文档中提到了多线程,虽然笔者还没有完全实现电子书阅读器,但是这里也没有相应的环境。

2、servlet是一种动态网页处理技术,比较古老了,或许是技术更新太频繁了,好像被淘汰了吧。

3、mvc是一种开发模式,将页面内容和数据模型分开,通过控制器协调获取页面需要的数据。

4、基础类+配置类+扩展类是笔者自创的,没有什么用途。

笔者有时间和精力再做一个完整的文档。

;