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

24 | 跨平台与 Web 开发的建议

许式伟 2019-07-12
你好,我是七牛云许式伟。
上一讲我们聊了浏览器,以及移动浏览器之争:小程序与 PWA。
当我们思考浏览器从技术上带来了什么的时候,我们可以把它分为两点。
跨平台桌面程序开发;
Web 开发(B/S 架构的新型应用)。
今天我们分别就跨平台桌面程序和 Web 开发展开来聊一聊。

跨平台桌面程序开发

跨平台的桌面程序开发是一个超级难题。无数人前仆后继,各种方案层出不穷,但至今为止,仍然没有称得上真正深入人心的解决方案。
原因很简单,因为桌面程序本身的范畴在变。有两个关键的因素会导致桌面开发产生巨大的差异性。
一个因素自然是操作系统。不同的操作系统抽象的界面程序框架并不一致。这些不一致必然导致开发工作量的增加。
放弃某个操作系统,就意味着放弃某个流量入口,也就意味着放弃这些用户。所以虽然很麻烦,我们还是不得不支持着每一个主流的操作系统。
另一个因素是屏幕尺寸。就算相同的操作系统,在不同尺寸的屏幕上,交互的范式也会存在很大的差异性,这也会导致不低的跨平台工作量。
首先我们看下操作系统。
PC 本地:Windows,macOS,Linux 等等;
PC Web:Chrome,Safari,FireFox 等等;
Mobile 本地:Android,iOS 等等;
Mobile Web:小程序,PWA 等等。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《许式伟的架构课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(15)

  • lckfa李钊
    因为工作的原因,莫名其妙的成为了大前端的一员,从Windows原生直绘界面到基于Qt的Web混合开发,再到Flutter移动跨平台,一路走来是越来越惊讶,前端的知识体系气泡越吹越大,突发学海无涯之感。不过我也一直在思考那么不变的东西,从框架的架构角度理解,它们其实是借鉴和传承的,因此不论是使用C++还是JS或者Dart,貌似都不再是难题了。学习架构课不一定就是奔着学完做架构师去的,也是为了更好的把自己的知识体系串通组建起来,没必要在开发语言的细节泥潭里无法自拔

    作者回复: 👍

    2019-07-13
    14
  • 黄强
    认真对待Model层,将其做厚,相应的前端会更薄,更能适应变化的可能,再次体现架构师对稳定点,变化点的抉择

    作者回复: 是的,本质就是这样

    2019-07-12
    1
    8
  • 笛神
    关于model层,一直认为使用spring框架的开发人员把service+dao用的太狭隘了,service堆满了业务处理,定义各种方法,感觉完全变回面向过程编程,丢掉了业务实体类,丢掉了数据行为封装,存在很多的耦合和重复。。一直想灌输将行为封装回业务实体里,service驱动业务实体来实现业务,而不是把所有业务逻辑在service层来实现掉。这样model层才会丰满,才是对现实世界的抽象,不知这个理解是否正确?

    作者回复: 是这样

    2019-07-16
    6
  • 秋天
    model和viewmodel的本质区别是什么?老师

    作者回复: model是业务数据,viewmodel是界面数据。因为界面体现业务,所以viewmodel和model的数据是有对应关系的,只不过数据结构不同

    2019-07-16
    2
    4
  • 杨洪林
    server 架构下的automation 具体指那些动作?

    作者回复: 这个是指外部系统对我们业务的api请求。我们的业务提供可视化的界面提供只是一种可能性,更重要的其实是如何让更多人使用我们的核心业务。

    2019-07-12
    4
  • Linuxer
    理解起来还是有些吃力,请问能结合一下具体项目吗?最好是某个开源项目

    作者回复: 开源项目可能过大,我下一讲是打算做一个小例子

    2019-07-12
    3
  • Eternal
    被MVC,MVP,MVMP绕晕了

    作者回复: 名词其实不重要,重要的是逻辑。我背后想说的意思其实是,这些一堆堆的模式,本质上是同一个模式,只是一些细节选择上不同形成的变种。这些细节差异并不那么重要。

    2019-07-29
    1
  • ANYI
    “”Model 层做厚”,老师,这个应该怎样去理解处理,很多现在项目都固化了,model就是对应了数据库表,通过service来处理业务,就是spring mvc这种分层,怎样去把这个model做厚呢?

    作者回复: 我理解spring中把model分成了service+DAO,然后很多人认为model=DAO

    2019-07-15
    1
    1
  • Geek_6d3676
    还是有点迷糊。

    在过去的实际开发中,我们对于Model 层的讨论经常在探讨到底是贫血模型还是充血模型。从某种意义上来说,Model 除了不仅不是一层薄薄的的数据载体和简单的行为定义外,还承载着对整个业务对象描述与驱动,概括了业务核心的本身且能被任意需要的合法对象消费。

    感觉自从上次GIAC大会后,大佬们都在说领域驱动设计所想表达的思想。

    作者回复: 是这样,这个和giac没啥关系

    2019-07-15
    1
  • 木瓜777
    您好,对model层的理解还是不够,我原先最早认为就是数据结构层,您说把model层做厚的含义是什么?

    作者回复: 业务逻辑层,也是整个系统的核心

    2019-07-13
    2
    1
  • 1900
    为啥桌面程序员也叫大前端呢?(另外到底啥叫大前端呢?)

    我的初步理解是和用户打交道的软件开发叫前端开发,我的理解对么?

    最后,有“大后端”这个术语么?如果有,具体又指什么?

    作者回复: 是的,和用户打交道都是前端或桌面(感觉前端可能更好一些)。叫大前端我理解主要为了强调前端的广度,因为操作系统实在太多了。

    2019-07-12
    1
    1
  • 虎哥
    把多租户的 API 转译成单租户的场景。所以这一层并不需要太多的代码,甚至理论上自动实现也是有可能的。请问哪里有相关资料可以查阅这个内容

    作者回复: 下一讲是一个例子

    2019-07-12
    1
  • Liber
    Electron为什么入选进表格中?
    2019-10-31
  • 恒修
    浏览器解决跨操作系统问题
    本质上要求其它系统服务对外提供一套标准
    未来云也会有一套标准,云上的中间件会基于这个标准构建
    2019-08-02
  • Aaron Cheung
    迟到的打卡24
    2019-07-15
收起评论
15
返回
顶部