许式伟的架构课
许式伟
七牛云 CEO
84945 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 89 讲
许式伟的架构课
15
15
1.0x
00:00/00:00
登录|注册

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

未来展望
关注焦点
演进思路
与传统Web开发的不同
生态问题
成功因素
内部对话
PWA
微信小程序
B/S 架构
语言限制
窗口系统的变化
界面开发框架的变化
跨平台
随时发布
软件服务化
跨平台与Web开发的建议
小程序
浏览器
下一讲主题
Web开发
技术文章知识关系脑图

该思维导图由 AI 生成,仅供参考

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

浏览器

今天开始我们聊聊浏览器。从商业价值看,浏览器带来的最为重大的进步是如下这三点。
其一,软件服务化。当产品交付从单机软件转向云服务后,社会分工就发生了巨大变化。
互联网让 “24 小时不间断服务”成为可能。任何一个环节的力量都得到百倍乃至千倍的放大,都有可能成长出一个超级节点,进而吞噬上下游,让服务链条更短。
其二,随时发布。这极大改进了软件迭代的效率。人们快速试验自己的想法,不必过度因为顾虑软件质量召回而束手束脚。
其三,跨平台。浏览器消除了不同操作系统平台的差异性,让一份代码到处运行成为可能。
不过我们今天把重心放到界面开发这个视角。从作为界面开发框架的角度看,浏览器带来的最重大变化又是哪些?
其一,操作系统的窗口系统被颠覆。一个网页只是一个窗口,不再有父子窗口。所有网页中的界面元素,都是一个虚拟视图(Virtual View),无论是大家耳熟能详的通用控件(比如 input,image,div 等等),还是自绘窗口(canvas)都一样。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

浏览器作为界面开发的重要工具,带来了许多重大变化。首先,浏览器实现了软件服务化,使得产品交付从单机软件转向云服务,极大地改变了社会分工和软件迭代效率。其次,浏览器消除了不同操作系统平台的差异性,实现了跨平台运行,大大提高了开发效率。此外,浏览器的窗口系统被颠覆,界面元素都成为虚拟视图,而窗口的绘制机制也发生了变化,HTML+CSS取代了操作系统的GDI。然而,浏览器长期以来只支持JavaScript一门语言,这对开发者提出了语言限制。为了突破这一限制,出现了以代码转换器为主的方案,以及WebAssembly的重要尝试。B/S架构对软件架构产生了巨大影响,从单用户变成了多用户,这也给应用架构设计带来了新的挑战。 微信小程序的出现改变了应用的交付方式,实现了应用“触手可及”的梦想,用户不用关心是否安装太多应用的问题。微信小程序成为了真正意义上的国产操作系统,对抗着Android和iOS两大移动操作系统生态。然而,小程序生态仍然存在标准不统一的问题,不同厂商的接口各自在快速迭代,很难建立统一的标准,更谈不上让开发者一次开发,到处可用。 与微信小程序相对应的是Google推出的PWA,它以兼容并对Web进行逐步改造升级为导向,更加技术化,关注如何让PWA在断网情况下和本地应用有更一致的体验。PWA并没有中心化的AppStore,更像是一项技术标准,而不是一个封闭的操作系统。尽管技术上相似,但从操作系统角度看,两者有代差。 总的来说,浏览器的发展趋势和移动浏览器之争是当前技术领域的热点话题。小程序和PWA代表了不同的应用交付方式和技术发展思路,对于开发者和厂商来说都具有重要意义。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《许式伟的架构课》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(28)

  • 最新
  • 精选
  • 热海
    许老师, 我在前面11.多任务:进程,线程与协程 中, 对"从操作系统内核的主线程来说,内核是独立进程,但是从系统调用的角度来说,操作系统内核更像是一个多线程的程序,每个系统调用是来自某个线程的函数调用." 这个说法不是太理解? 1. 从操作系统内核的主线程来说,内核是独立进程. 这个说法, 就是说操作系统内核就是一个多线程的进程,这些线程没有用户态的地址空间; 内核的各个线程共享3G~4G的地址空间, 共用一份内存地址映射表;这样理解对吗? 2.从系统调用的角度来说, 操作系统内核更像是一个多线程的程序,每个系统调用是来自某个线程的函数调用. 这里我有些困惑. 比如, 应用程序A, 运行起来是一个进程A, 其中通过系统调用进行操作系统内核执行代码时, 这时使用的是谁的堆栈?是进程A的堆栈, 还是操作系统进程的堆栈? 我的理解进程A应该有用户态堆栈, 但是有没有内核态堆栈?这个内核态堆栈是属于进程A还是操作系统进程的堆栈?这个地方没有理解?请帮忙解惑.

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

    2019-07-11
    2
    8
  • Null
    现在搜facebook libra, 好像是已经宣告失败了。

    作者回复: 是的。我后来的认知也发生了迭代,现在我到看法是联盟链是伪区块链

    2022-11-29归属地:新加坡
    3
  • 不温暖啊不纯良
    看了老师这篇文章之后,我突然有个启发,人在沉浸于自己的小宇宙造火箭的时候,也不要忽略外界的发展,更需要关注自己的同行,和在未来有可能跟自己所造的火箭产生竞争关系的行业。

    作者回复: 是这样,不要当井底之蛙

    2021-04-08
    3
  • 做到CEO的技术大牛,认知高度和广度,看问题的视角,确实让人耳目一新。
    2019-07-09
    3
    47
  • Charles
    Google在某些方面像是“烂好人”,相信技术改变世界,造福人类。 腾讯微信就自私商业化一些,哪怕有研究院,核心技术永远也只是服务自己的公司,相信有用户世界就是我的。
    2019-07-09
    1
    24
  • Eason
    由命令行,到GDI,到浏览器,到小程序。由浏览器到小程序这一步,技术上我们最能适应,因为整个UI开发的基础框架技术没有很大变化,但是背后的理念感觉却发生了很大变化。许老师文章我都看好几遍,感觉里面有些不少东西值得我学习思考,看一次是get 不到的。
    2019-07-10
    8
  • 八哥
    Facebook本身账户体系有了,现在推出Libra,有了支付体系。之前Facebook已经有开放平台,(App Store),加上PWA。国外可能走了国内不相同的路线。
    2019-07-09
    4
  • 程序员Artist
    自始至终的不看好小程序,尤其是中国产小程序。各大商业公司是放心把命交给操作系统还是一个商业公司的APP呢?中国一堆小程序平台协议也不可能统一。从商业和技术角度都不可能成功。最多就是一个极小的场景补充。
    2021-01-22
    2
  • 瀚海星尘
    小程序技术本质还是web,不同的是微信对它的管理模式相当创新,一种很有创意的组织模式。
    2019-07-10
    1
    2
  • sam
    看到了一场新的战争,PWA+Libra,最终赢家Facebook。 对于应用开发商也是多了一个安全保障,不必押注微信小程序一家。无论如何,平台之争都是激烈的。
    2019-07-09
    2
收起评论
显示
设置
留言
28
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部