写点什么

后 HTTP 时代:使用 Meteor 开发实时 Web 应用

  • 2013-06-14
  • 本文字数:1318 字

    阅读完需:约 4 分钟

QCon New York 2013 大会的 HTML5 专场中, Matt DeBergalis Meteor 做了一场报告。Meteor 是开源的实时 Web 应用框架,Debergalis 是该框架的联合创建者。据 DeBergalis 介绍,从架构上看,选择客户端还是服务器,钟摆已经摇摆了多次:从主机(服务器端)到桌面(客户端),再到 Web(服务器端),现在又发展到了现代化的 Web——客户端功能越来越强,越来越多的工作又回到了客户端。然而,DeBergalis 认为用于构建这些现代化 Web 应用的工具还没有跟上。Meteor 的目标就是提供一种工具,让开发者更轻松、更一致地构建这类实时 Web 应用。

今天的现代化 Web 应用由两个不同的部分组成:

  1. 服务器端可能是使用诸如 PHP、Java 或 Ruby 等语言构建的,同时使用特定的服务器端 API 及工具来构建软件并管理依赖。
  2. 客户端会使用一种或多种 JavaScript 库、HTML 和 CSS,而且也是利用自己的构建工具(如 Google Closure Compiler )来构建的。

两者之间的通信本质上采用的是一种定制的线级协议,通常使用 HTTP 或 WebSocket 之上的 JSON 来编码,并以这种方式发送命令:发送一段数据、将这段新数据持久化及渲染这段数据等。

Meteor 反思了这种实现方式,并致力于让一切实时进行。HTTP 并不适合这一目标,相反,通过 WebSocket 使用 Meteor 自己的 DDP(分布式数据协议)进行通信更为合适,而且这里的通信不仅仅是交付 Web 资源。DDP 是一种通用协议(使用 JSON 编码),支持如下三种核心操作:

  • 订阅:利用该协议,客户端可以登录并发表自己的意见:“我对数据集合 X 感兴趣,请发给我它的所有数据的初始快照,然后不断地将数据的变化值发给我,以便我更新缓存的数据,使其保持最新。”
  • 发布:“实体 Y 的 X 属性,其值修改为 Z。”
  • 远程过程调用(RPC):这类操作用于执行远程过程,并以容错的方式返回执行结果。

Meteor 提供了一个用 JavaScript 编写的、支持服务器和客户端的 DDP 实现(在服务器上是支持 Fibers Node.js )。不过该协议与实现无关,因此可以编写另外的实现作为替代。比如,现在已经有了一个.NET 客户端库

Meteor 的第二个组件是其视图引擎,它能利用底层数据自动将 DOM 保持最新,与 AngularJS Web Components 支持的功能类似。

Meteor 的第三个组件是打包系统。因为 Meteor 组件不仅仅是服务器端或客户端,因此当前的打包系统并不合适。Meteor 的打包系统可以同时分发服务器端组件和客户端组件。

Meteor 本身可以确定哪部分代码需要运行在浏览器中,哪部分运行在服务器上。DeBergalis 提到,为了更好地分割代码,目前正在开发静态源码分析技术。有了这样的技术,就可以只推送客户端需要的代码。

实时推送数据,并不是 Meteor 中唯一涉及实时性的地方。热代码推送是 Demo 中最引人注目的特性之一是:不管开发者什么时候保存文件,Meteor 不仅能自动地重新加载服务器上的代码,还能自动地将代码打包,并将代码推送给所有客户端,确保所有客户端运行的是与服务端代码兼容的、最新最好的客户端代码。

Meteor 是一种有趣的全栈式实时 Web 应用开发方法。要学习更多知识,请阅读Meteor 网站提供的文档,并研究相关例子。此外,还有一本关于Meteor 的书,InfoQ 曾发布过相关书评

查看英文原文: The Post-HTTP Era: Real-Time Web Apps With Meteor

2013-06-14 07:323284
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 134.8 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

云上远程运维的最后那点担心,“云梯”帮你解决

华为云开发者联盟

运维 华为云Stack 远程运维 安全可信 云梯

TDSQL将发布免费版本,助力国产数据库生态完善

腾讯云数据库

数据库 tdsql

飞鹤乳业数智化转型之路

大咖说

云计算 数字化转型 数字化 企业上云

2020 更新 - 腾讯 Android 面试 (已拿到月薪22K offer)

android 程序员 移动开发

模块三作业

doublechun

「架构实战营」

2020Android面经,历时一个半月,斩获3个大厂offer,移动端开发工程师面试题

android 程序员 移动开发

推荐!DevOps工具正越来越自动化

SoFlu软件机器人

性能优化反思:不要在for循环中操作DB

CRMEB

教你如何在Spark Scala/Java应用中调用Python脚本

华为云开发者联盟

Java Python spark JVM Spark Scala

恒源云(GPUSHARE)_U1S1,1年1度GPU云种草大会

恒源云

深度学习

2020 国内互联网公司的Android工程师薪酬排名!看看你是什么水平

android 程序员 移动开发

2020 年需要关注的 5 大 Android 开发技术(1),Android知识总结

android 程序员 移动开发

2020Android开发者学习路线(快速篇),分析android进程管理机制

android 程序员 移动开发

基于Hive Connector的openLooKeng Connector 创建复用机制剖析

openLooKeng

大数据 hive 多数据源配置 计算引擎 openLooKeng

JPA + EclipseLink + 云平台 = 运行在云端的数据库应用

汪子熙

数据库 Cloud Cloud Native 11月日更

【Java原理剖析系列】深度synchronized工作原理分析

洛神灬殇

java 11月日更

TDSQL | 深度解读HTAP系统的问题与主义之争

腾讯云数据库

tdsql 国产数据库

2020Android 开发年度总结:“这一年里我到底做了些啥,面试阿里的时候一定会问到的

android 程序员 移动开发

用一套代码实现APP和小程序

Speedoooo

容器 移动开发 ios开发 APP开发 Andriod开发

2020-Android-面试重难点(万字篇),android屏幕适配的五种方式

android 程序员 移动开发

Hazelcast在openLooKeng中的应用(Cache篇)

openLooKeng

大数据 cache 计算引擎 openLooKeng

新版本发布!openLooKeng v1.4.0上线

openLooKeng

大数据 计算引擎 openLooKeng

浅析openLooKeng安全认证机制

openLooKeng

大数据 ldap openLooKeng 安全认证

使用JPA + Eclipselink操作PostgreSQL数据库

汪子熙

eclipse 数据库 11月日更

硬核干货!TDSQL全局一致性读技术详解|

腾讯云数据库

tdsql 国产数据库

TDSQL已助力20余家金融机构完成核心替换

腾讯云数据库

tdsql 国产数据库

超简单教程!自动部署openLooKeng

openLooKeng

大数据 计算引擎 openLooKeng 安装部署

双11在即,分享一些稳定性保障技术干货

老张

系统稳定性 大促 生产环境全链路压测

实用推荐系统:寻找有用的用户行为

博文视点Broadview

助力邯钢工业4.0!TDengine在深度(平潭)节水减排项目中的应用

TDengine

数据库 tdengine 后端

2020Android-目前最稳定和高效的UI适配方案!你头秃都没想到还能这样吧!

android 程序员 移动开发

后HTTP时代:使用Meteor开发实时Web应用_JavaScript_Zef Hemel_InfoQ精选文章