许式伟的架构课
许式伟
七牛云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 | 接口设计的准则
许式伟的架构课
登录|注册

23 | Web开发:浏览器、小程序与PWA

许式伟 2019-07-09
你好,我是七牛云许式伟。
前面几讲我们聊到桌面软件开发,是从原生应用(Native App)角度来讲的,我们的讨论范围还只是单机软件,没有涉及网络相关的部分。
虽然介绍 Model 层的时候,我拿基于数据库实现 Model 层来谈常见的两个误区,但这只是因为这种问题经常能够见到,比较典型。实际纯单机软件很少会基于数据库来做,通常是自己设计的内存中的数据结构。

浏览器

今天开始我们聊聊浏览器。从商业价值看,浏览器带来的最为重大的进步是如下这三点。
其一,软件服务化。当产品交付从单机软件转向云服务后,社会分工就发生了巨大变化。
互联网让 “24 小时不间断服务”成为可能。任何一个环节的力量都得到百倍乃至千倍的放大,都有可能成长出一个超级节点,进而吞噬上下游,让服务链条更短。
其二,随时发布。这极大改进了软件迭代的效率。人们快速试验自己的想法,不必过度因为顾虑软件质量召回而束手束脚。
其三,跨平台。浏览器消除了不同操作系统平台的差异性,让一份代码到处运行成为可能。
不过我们今天把重心放到界面开发这个视角。从作为界面开发框架的角度看,浏览器带来的最重大变化又是哪些?
其一,操作系统的窗口系统被颠覆。一个网页只是一个窗口,不再有父子窗口。所有网页中的界面元素,都是一个虚拟视图(Virtual View),无论是大家耳熟能详的通用控件(比如 input,image,div 等等),还是自绘窗口(canvas)都一样。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《许式伟的架构课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(16)

  • 做到CEO的技术大牛,认知高度和广度,看问题的视角,确实让人耳目一新。
    2019-07-09
    17
  • Charles
    Google在某些方面像是“烂好人”,相信技术改变世界,造福人类。
    腾讯微信就自私商业化一些,哪怕有研究院,核心技术永远也只是服务自己的公司,相信有用户世界就是我的。
    2019-07-09
    10
  • Eason
    由命令行,到GDI,到浏览器,到小程序。由浏览器到小程序这一步,技术上我们最能适应,因为整个UI开发的基础框架技术没有很大变化,但是背后的理念感觉却发生了很大变化。许老师文章我都看好几遍,感觉里面有些不少东西值得我学习思考,看一次是get 不到的。
    2019-07-10
    4
  • 热海
    许老师, 我在前面11.多任务:进程,线程与协程 中, 对"从操作系统内核的主线程来说,内核是独立进程,但是从系统调用的角度来说,操作系统内核更像是一个多线程的程序,每个系统调用是来自某个线程的函数调用." 这个说法不是太理解?
    1. 从操作系统内核的主线程来说,内核是独立进程. 这个说法, 就是说操作系统内核就是一个多线程的进程,这些线程没有用户态的地址空间; 内核的各个线程共享3G~4G的地址空间, 共用一份内存地址映射表;这样理解对吗?
    2.从系统调用的角度来说, 操作系统内核更像是一个多线程的程序,每个系统调用是来自某个线程的函数调用. 这里我有些困惑. 比如, 应用程序A, 运行起来是一个进程A, 其中通过系统调用进行操作系统内核执行代码时, 这时使用的是谁的堆栈?是进程A的堆栈, 还是操作系统进程的堆栈? 我的理解进程A应该有用户态堆栈, 但是有没有内核态堆栈?这个内核态堆栈是属于进程A还是操作系统进程的堆栈?这个地方没有理解?请帮忙解惑.

    作者回复: 1、内核主线程是一个独立进程,地址空间是3G-4G。其他用户进程系统调用(syscall)时,用的地址空间是自己的,只不过到了内核后提权了,而且内核地址空间是共享的,所以从内核函数角度感觉上相当于在一个线程中执行一个函数,并不需要做太多的特色处理。
    2、关于堆栈,用户系统调用时参数压入的是用户堆栈。到了内核这边后,这些仍然是不变的,并不需要切换到内核自己的堆栈。

    2019-07-11
    2
  • 瀚海星尘
    小程序技术本质还是web,不同的是微信对它的管理模式相当创新,一种很有创意的组织模式。
    2019-07-10
    1
    2
  • 八哥
    Facebook本身账户体系有了,现在推出Libra,有了支付体系。之前Facebook已经有开放平台,(App Store),加上PWA。国外可能走了国内不相同的路线。
    2019-07-09
    2
  • 勇闯天涯
    看到了一场新的战争,PWA+Libra,最终赢家Facebook。

    对于应用开发商也是多了一个安全保障,不必押注微信小程序一家。无论如何,平台之争都是激烈的。
    2019-07-09
    2
  • antipas
    想起了凯文凯利的”失控“理论,世界会越来越 多中心化且具有分布式智能,创新来自于被创造者,造物主和被创造者共享控制权同呼吸共命运
    2019-07-09
    1
  • 梦醒十分
    许老师的文章质量高呀!
    2019-07-09
    1
  • 杜建平
    我觉得还是PWA更有远见,国内太浮躁,小程序最终还是依靠浏览器,浏览器依赖OS。就像webos一样,腾讯多么想收购的那个手机操作系统
    2019-10-07
  • Halohoop
    卧槽~这文章看得我又都快s了~
    2019-08-15
  • Eternal
    最后老师的预言听得新潮澎湃,期待大佬的厮杀,这样小菜才有机会
    2019-07-29
  • Geek_a06b28
    许老师,在设计生产交易系统架构和数据分析系统架构(含大数据平台),有以下问题咨询您:
    1、2种系统在总体、应用、数据、技术架构等纬度在设计的时候需要注意哪些关键的点?
    2、两者之间如何实现有效且良好的衔?
    3、如果使用数据服务平台是需要2个还是1个即可呢?
    期待您的回复。
    2019-07-13
  • Geek_88604f
    感觉小程序类似云上的SaaS服务
    2019-07-10
  • MindController
    长见识了,激动人心
    2019-07-10
  • Aaron Cheung
    起床打卡23
    2019-07-09
收起评论
16
返回
顶部