周宇盛的博客 学习笔记 读书笔记

Presentation Online 技术构思

redux

actions

  • 微信登录、提交个人资料
  • 上传文件、打开文件、切换文件
  • 开始 online presentation、加入 online presentation
  • 微博、微信、朋友圈分享
  • 新建画板、删除画板
  • 打开话筒、打开摄像头、申请话筒权限

reducers

实现各 actions 的功能

  • 打开话筒:新建直播频道并进入新建的直播频道
  • 上传文件、打开文件:百度云DOC上传文件、阅读文件

store

在 reducers 的基础上创建 store

Provider

包裹 components,传递 store

container components

给 UI components 传递参数

UI components

渲染 UI,向上事件

Online Presentation技术选型

“云服务是基础设施”,我们应该用好它,降低金钱和人力成本。我们的主要任务是,策划商业模式,在云服务的基础上进行开发。

任务 技术
PPT 百度云文档服务 DOC,Office Online + WOPI
视频直播 阿里云视频直播
IM 网易云信野狗云
服务器 阿里云LeanCloud
实时画板 react-sketchpad
Data Management Redux, MongoDB

PPT

开发阶段和起步阶段:百度云文档服务 DOC

起步阶段后:Office Online + WOPI

IM

开发阶段:网易云信100个账号内免费,野狗云日活跃设备50个内免费

生产阶段:网易云信专业版 1800元/月起,野狗云日活跃设备200个内 49元/月

视频直播

开发阶段和起步阶段:乐视云体验版 15G/月免费

起步阶段后:阿里云音视频直播

实时画板

开发阶段和起步阶段:react-sketchpad

起步阶段后:draw 的实时性 + literallycanvas / fabric.js 的功能和界面

服务器

开发阶段:LeanCloud 的免费开发版

生产阶段:阿里云

Online Presentation 商业可行性分析

Online Presentation已有多个解决方案。Skype、QQ

而且在教育、办公领域都有作用。很多视频教程,画面只有PPT,如果用Online Presentation解决,可以减少对带宽的依赖,使得资源的扩散性更强。在汇报工作时,我们也完全可以用Online Presentation解决,而不需要非得面对面进行。

但用的人并不多。

为什么?

可能的原因:

  • 暂时还没有真正好用,功能丰富的解决方案
  • Online Presentation并没有深入群众,去最广大有需求的人群中,需要做 Online Presentation的人不用 QQ 和 Skype

Online Presentation 技术可行性分析

目前知道的几种可以进行Online Presentation,而且只需要浏览器:

Powerpoint Online/Powerpoint Web Apps

2009年微软发布PowerPoint Web Apps,2014年改名为PowerPoint Online。

技术实现:用户上传PPT,前端向后端发起POST请求到指定的URL,后端收到文件后将PPT重命名,放到指定的目录,并在数据库里记录文件名。

优点:

  • 保留了PPT的动画效果;
  • 支持Excel, Word, PowerPoint格式;

缺点:不能否实现广播。

  1. 用view.officeapp.live.com

在前端页面插入https://view.officessapps.live.com指定src的<iframe>,src的src参数为文件路径,这样即可在浏览器上观看并控制PPT。但是需要访问微软的服务器,访问速度很慢。

  1. 自建服务器

或者,用自己的服务器提供 Office Online 服务,访问自己国内的服务器,对访问速度拥有更大的控制。这有两种安装方法:

  • 安装 Office Web Apps Server,配置好WOPI协议
  • 作为SharePoint的app安装

The service can also be installed privately in enterprise environments as a SharePoint app, or through Office Web Apps Server. source: https://en.m.wikipedia.org/wiki/Office_Online

PDF.js

技术实现:用户上传PPT,后端将其转成PDF,并存储。或者用户直接上传PDF,后端直接存储。前端使用PDF.js插件,渲染出PDF,可以通过参数控制PDF当前展示的页码,所以可以通过后端控制,并实现broadcast。

优点:可以实现broadcast。

缺点:

  • 没有PPT的动画效果;

  • 需要后端转码。

百度云文档服务 DOC

可以实现:加载在线文档、加载文档时指定页码、文档阅读翻页事件

优点:

  • 可以实现broadcast;
  • 支持Excel, Word, PowerPoint格式;
  • 实现方便;
  • 云存储。

缺点:

  • 后端的工具包使用Java语言;
  • PPT没有动画效果;
  • 需要付费,但价格便宜。
计费项 按月累计阶梯 单价
存储容量 0.005元/GB/天
转码成功次数 0~1500次 0.15元/次
1501~3000次 0.12元/次  
3001~30000次 0.1元/次  
30001次以上 0.08元/次  
外网下行流量 0.5元/GB

back-end language

后端用所有语言都行,只要他能在服务器所用的系统上运行就可以。

也就是说 scripting language (Node, Ruby, Python), functional language ( Haskell, Lisp ), compiling language (Go, C++) 都可以。

这和制作桌面端软件不一样,制作桌面端软件如果用一些用户电脑不支持的语言,就得要求用户先安装相关的支持,然后才能运行你的软件,这样影响用户体验。比如安装IE10,就必须要要安装 .NET framework,我下载了很久安装好了,还是有问题,然后我就放弃了。

服务器端语言不管用什么语言,只要程序员先把环境搭好,就不会有问题,用户看到的网站都是一样的。

这时候选择语言时,真正需要考虑的就是不同语言的特性了。比如scripting language更高级,更容易入门,对程序员的要求更低,也更好理解,所以广受欢迎,但是对硬件的消耗比compiling language高,如果用户很多,运算量很大,就可以考虑是否应该改为用compiling language,以降低硬件成本。

后端不仅能用一种语言,还能多种语言搭配用。