Angular 2.0 - 终端用户场景

目标
这篇文档讲述了数据密集型angular2.0模块的设计,使它成为angular核心的一部分

终端用户场景
这些场景描述了各种能够用angular2.0轻易构建的app,聚焦于应用数据,从终端用户的角度来叙述。像可操作的转换(指angular对首发数据转换的中间层处理)这样的一些特性可能不会被核心的数据持久化框架支持,但是他们可以通过框架内的机制来实现。

离线和实时同步(github客户端)
作为一个github客户端的使用者,我想要能够实时的启动app,然后查阅所有分配给我的issue列表。我想要能够阅读这些issues的描述,并且能够添加评论。假如由于某种原因我的网络不稳定或者不可用,我希望能够被及时通知我正工作在离线模式,但是这种情况下,我仍然能够浏览issues和添加评论,并且不会有任何的延迟和阻碍。我应该能够清晰的了解我的哪一个新评论正在与服务器同步,哪一个评论仅存储在本地存储里。我应该能够添加评论和其他的元信息到issues里面,最后当网络恢复的时候,它最终能够保存到其他用户里面。

离线访问策略(移动音乐播放器)
作为一个经常在上班路上听音乐的人,我喜欢使用手机上基于web的音乐播放器来播放我喜欢的音乐,当我移动从家里的wifi到蜂窝数据网络,到咖啡店的wifi,我希望在这个过程音乐播放不会被中断。我家里的网络可以允许我无障碍的接收音乐流,但是即使我的手机信号满格,蜂窝网络都不会有足够快的下载速度不中断的接收音乐流。app应该能够默认播放本地磁盘里面可用的音乐,仅当网络可用的时候下载歌曲。当我正在开车的时候,app应该能够识别到,以防止我开车撞倒栏杆。当在线音乐流不可用的时候,我应该能够跳过歌曲,搜索我的本地库。当app不够智能的时候,我应该能够强制仅使用本地磁盘的音乐。

实时多用户参与(github客户端)
作为一个github客户端的用户,我想要能够查看issue,假如我在线的时候,团队的其他成员也在查看相同的issue,我能够被通知到。
同样的,当这个成员移动到别的issue的时候,我同样能够知道他不在看这个issue了。加入一个成员对当前的issue做了改变,我能够在我的issue视图上面看到这个改变,甚至可能需要在有限时间内获取到一个改变的通知(视觉上的强调)。

会话保持的应用状态(网络百科全书)
作为一个手机端在线百科全书的用户,我希望能够与UI组件进行交互,就像accordion(一个UI组件),一个词条里面可以包含不同的数据。当我之后再打开浏览器时(这里是指从切换到别的应用再切换回浏览器),我看到的页面仍然是我之前离开时的那个状态。当浏览器自动重载页面的时候,我不希望看到页面的初始状态,我看到的也应该是我之前离开的那个状态。

使用前瞻性的缓存支持离线存储(移动销售工具)
作为一个汽车销售员,我喜欢在我的平板上面使用网页应用来记录我的客户信息,比如说他们感兴趣的品牌和型号。虽然我知道当我返回大厅的时候,我会有网络连接,但是应该能够知道我有限制的网络接连,当我不在大厅的时候。当应用有稳定的网络连接的时候,它可以下载关于库存和价格的更新。应用也应该能够上传我正在服务的用户的信息,包含了他们感兴趣的交通工具。应用应该能偶确保加密所有存储在本地和传送的网络的数据,一旦数据被上传到服务器上,就马上清除掉本地的数据。在晚餐时间,我可以用家里的电脑很安全的访问客户信息,因为他们可能希望之后我给他们打电话,就像坐在一起一样交谈。在我没有网络连接的时候,我应该也能打开应用,同时能够提醒我当前的库存和数据是之前某个时刻的,不是最新的。

离线归档和查询(实时群组聊天)
作为一个乘坐地铁上班的程序员,我想要能够使用我的聊天应用发送群信息给我的团队其他成员,搜索群聊历史记录的其他信息,甚至当我在地下深处,没有网络连接的时候,也能够够实现这个功能。我需要能够执行复杂的离线搜索,比如,语音输入"显示过去一天中Frank发来信息中包含关键字'unicorn'的信息"。我应该能够以诙谐的笑话回复信息,同时能够根据应用的状态获取到准确的通知,比如,"等待网络连接再发送"等。我可以取消信息发送,当延迟了太久了,笑话不再变得有趣了。

待续....