许式伟的架构课
许式伟
七牛云CEO
立即订阅
20090 人已学习
课程目录
已更新 72 讲 / 共 77 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 怎样成长为优秀的软件架构师?
免费
基础平台篇 (21讲)
01 | 架构设计的宏观视角
02 | 大厦基石:无生有,有生万物
03 | 汇编:编程语言的诞生
04 | 编程语言的进化
05 | 思考题解读:如何实现可自我迭代的计算机?
06 | 操作系统进场
07 | 软件运行机制及内存管理
08 | 操作系统内核与编程接口
09 | 外存管理与文件系统
10 | 输入和输出设备:交互的演进
11 | 多任务:进程、线程与协程
12 | 进程内协同:同步、互斥与通讯
13 | 进程间的同步互斥、资源共享与通讯
14 | IP 网络:连接世界的桥梁
15 | 可编程的互联网世界
16 | 安全管理:数字世界的守护
17 | 架构:需求分析 (上)
18 | 架构:需求分析 (下) · 实战案例
19 | 基础平台篇:回顾与总结
加餐 | 我看Facebook发币(上):区块链、比特币与Libra币
加餐 | 我看Facebook发币(下):深入浅出理解 Libra 币
桌面开发篇 (16讲)
20 | 桌面开发的宏观视角
21 | 图形界面程序的框架
22 | 桌面程序的架构建议
23 | Web开发:浏览器、小程序与PWA
24 | 跨平台与 Web 开发的建议
25 | 桌面开发的未来
26 | 实战(一):怎么设计一个“画图”程序?
27 | 实战(二):怎么设计一个“画图”程序?
28 | 实战(三):怎么设计一个“画图”程序?
29 | 实战(四):怎么设计一个“画图”程序?
30 | 实战(五):怎么设计一个“画图”程序?
31 | 辅助界面元素的架构设计
课外阅读 | 从《孙子兵法》看底层的自然法则
加餐 | 想当架构师,我需要成为“全才”吗?
32 | 架构:系统的概要设计
33 | 桌面开发篇:回顾与总结
服务端开发篇 (14讲)
34 | 服务端开发的宏观视角
35 | 流量调度与负载均衡
36 | 业务状态与存储中间件
37 | 键值存储与数据库
38 | 文件系统与对象存储
39 | 存储与缓存
40 | 服务端的业务架构建议
41 | 实战(一):“画图”程序后端实战
42 | 实战(二):“画图”程序后端实战
43 | 实战(三):“画图”程序后端实战
44 | 实战(四):“画图”程序后端实战
45 | 架构:怎么做详细设计?
46 | 服务端开发篇:回顾与总结
加餐 | 如何做HTTP服务的测试?
服务治理篇 (11讲)
47 | 服务治理的宏观视角
48 | 事务与工程:什么是工程师思维?
49 | 发布、升级与版本管理
50 | 日志、监控与报警
加餐 | 怎么保障发布的效率与质量?
51 | 故障域与故障预案
52 | 故障排查与根因分析
53 | 过载保护与容量规划
54 | 业务的可支持性与持续运营
55 | 云计算、容器革命与服务端的未来
56 | 服务治理篇:回顾与总结
架构思维篇 (9讲)
57 | 心性:架构师的修炼之道
用户故事 | 站在更高的视角看架构
58 | 如何判断架构设计的优劣?
59 | 少谈点框架,多谈点业务
60 | 架构分解:边界,不断重新审视边界
加餐 | 实战:“画图程序” 的整体架构
61 | 全局性功能的架构设计
62 | 重新认识开闭原则 (OCP)
63 | 接口设计的准则
许式伟的架构课
登录|注册

20 | 桌面开发的宏观视角

许式伟 2019-06-28
你好,我是七牛云许式伟。今天开始,我们进入第二章,谈谈桌面软件开发。
从架构的角度,无论你在什么样的终端设备(比如:PC、手机、手表、手机等等),也无论你在做 Native 应用,还是基于 Web 和小程序,我们都可以统一称之为桌面程序。
如前文所述,一个桌面程序完整的架构体系如下:
对于桌面程序,最核心的话题是交互。为了把关注点收敛到交互上,我们下面重点讨论操作系统对交互范式的设计。
从需求角度看,桌面程序的交互方式并不稳定,它的交互范式经历了很多次的迭代。

命令行交互

最早出现的交互范式是命令行交互程序。使用的交互设备为键盘 + 显示器
输入被抽象为一段以回车(Enter 键)为结束的文本(通常是单行文本,要输入多行文本,需要在行末输入“ \ ”对回车进行转义)。
输入方式有二:一是命令行,二是标准输入(stdin)。输出也是文本,但输出目标可能是标准输出(stdout),也可能是标准错误(stderr)。
正常情况下,标准输出(stdout)和标准错误(stderr)都是向屏幕输出。这种情况下,肉眼并不能区分输出的内容是标准输出,还是标准错误。
命令行交互程序的输入输出可以被重定向。一个程序的输出,可以被重定向写入到文件(标准输出和标准错误可以输出到不同的文件以进行区分),也可以通过管道功能重定向为另一个程序的输入。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《许式伟的架构课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(14)

  • 苟范儿
    这些桌面的交互都主要是针对计算机、手机两类终端与人交互的. 鼠标、键盘(触摸屏)对应到手,图形界面对应到眼睛,语音对应到耳朵,麦克风对应到嘴巴.
    但实际上交互的形式应该不局限于人与终端,也可以是终端与物体,而且以后应该会更多。举一些交互例子,比如:
    1、商品自助结算(图像识别、磁识别、一维码等),商品与结算机的交互。
    2、NFC 刷公交卡,共享单车的开锁(扫码、蓝牙),终端与其它设备的交互。
    3、汽车的方向盘交互(未来演化为自动驾驶交互),方位控制。
    4、摇杆控制(无人机等设备),涉及了空间方位的控制。
    个人觉得在万物互联的未来,传感器会变的更丰富,智能程度也增高,反而物与物之间、终端与物体之间的交互会更多,反而人不需要经常作为任务的发起点进行太多交互,更多的交互放在智能设备(不局限于手机、计算机)之间。

    作者回复: 挺好的补充。想象一下这些场景下的交互框架应该怎样才比较合理。

    2019-06-28
    22
  • 有铭
    老师,我可不可以这么理解:
    一切要和最终用户直接进行交互的,都是前端系统,也就是您说的桌面开发
    一切不需要和最终用户直接交互的(中间有隔着一层或若干层)。都算后端系统

    作者回复: 可以这么理解

    2019-06-28
    5
  • Geek_88604f
    在命令行和字符界面时代,应用和交互系统是混在一起的。但是到了图形界面和智能交互时代,应用和交互系统分离了。这是什么原因,许老师?

    作者回复: 命令行程序没有提供编程框架,业务你自己串联。图形界面程序你的业务代码由窗口系统抽象的事件驱动编程框架所驱动。

    2019-06-28
    4
  • Charles
    比如iOS APP这个桌面程序(native),好像对应不上那张“桌面程序完整的架构体系”配图,把浏览器这一层去掉就OK了吗?

    作者回复: 嗯

    2019-06-28
    1
    3
  • Being
    老师您怎么看VR和AR这类智能交互呢,它们应该也属于语音、视频以及各种传感器之间配合的输入输出吧,其实也就是一套独立的智能交互系统吧。
    还有像之前您的课程说的,“智能”应该属于操作系统里的框架,然后对于应用层来说就是各种场景的应用扩展,所以关于交互的智能系统,是否也是操作系统的职责呢?

    作者回复: 我觉得智能交互系统是操作系统提供是现实的。智能则不一定现实。

    2019-06-28
    2
  • KingSwim
    意识交互?会实现么
    2019-08-12
    1
    1
  • 笨笨
    人还有大脑🧠,大脑还没作为交互的一端——无论是输入还是输出,而且这种也更自然

    作者回复: 看起来还有点遥远

    2019-07-04
    1
  • williamcai
    个人认为,交互变化的是方式,本质上还是输出和输入

    作者回复: 最多只能做到架构不变,不能做到代码不变。我们求的是代码不变。

    2019-07-01
    1
  • 歌在云端
    请问一下标准输入是什么跟命令行有什么不同

    作者回复: C语言里面的scanf就是标准输入

    2019-06-28
    1
  • Aaron Cheung
    打卡20 宏观角度
    2019-06-28
    1
  • 杨洪林
    现在一些巨头推出的带有显示屏智能音箱是不是就是老师说的未来的交互模式的雏形?

    作者回复: 嗯

    2019-06-28
    1
  • prader
    老师,这样说来,音视频技术会有教大的发展呢?
    2019-10-27
  • 小鲸鱼
    从某种角度看,锤子的tnt也能算是采用了新的交互范式了吧。

    作者回复: 这...

    2019-07-02
  • 阿卡牛
    之后会不会变成脑电波交互
    2019-06-28
收起评论
14
返回
顶部