web应用程序是什么

你手机里装着的应用程银行App,点开就能转账,应用程背后连着的应用程那个看不见的系统,就是应用程web应用程序。它不是应用程一个装在手机里的程序,而是应用程跑在千里之外某台服务器上的代码,你的应用程手机屏幕只是它的遥控器。

2004年我还在用拨号上网,应用程打开一个网页要等半分钟。应用程那时网页就是应用程一堆静态文字和图片,像一张电子报纸,应用程你看完就关掉,应用程它不会记住你是应用程谁。现在完全不同了——你打开淘宝,应用程首页推荐的应用程商品比你自己还了解你的购物习惯。这种质变发生在2010年前后,浏览器变得足够强大,能像本地软件一样流畅运行复杂逻辑。web应用程序从此不再是“网页”,而是住在浏览器里的“软件”。

拆开来看,它由三块积木搭成。前端是你在屏幕上看到的一切——按钮、动画、输入框,用HTML、CSS和JavaScript写成。后端是你看不见的部分,它处理“转账”这样的请求,读写数据库,执行商业规则。中间还有一层API,像餐厅的传菜窗口,前端喊一句“我要转账”,后端就把做好的结果端出来。这三者缺一不可,但真正让web应用程序区别于传统软件的是——它永远在更新。

传统软件装在电脑上,厂商每半年发一次光盘让你升级。web应用程序的代码全在服务器端,开发者半夜改几行代码,第二天你打开浏览器就是新版本。这带来一个有趣的副作用:你用的每个web应用,其实都是“半成品”,它永远处于被修改的状态。GitHub上有个项目叫“今日头条”,我见过它的代码仓库,几乎每天都有几十次提交记录——这种持续演化的特性,让软件行业从“制造业”变成了“服务业”。

但代价也很明显。你依赖的每个web应用,都意味着你的数据存放在别人的硬盘上。去年我整理旧邮箱,发现2008年用过的某论坛账号,早就打不开了——那个网站倒闭了,我写的几百篇帖子灰飞烟灭。这让我意识到,web应用程序虽然方便,却像租房子住,房东随时可能收回钥匙。相比之下,本地软件更像自建房,产权在你手里,但维护成本高得吓人。

话说回来,这种集中式架构的优势实在太大——零安装、跨平台、实时协作。Google Docs允许十个人同时编辑一个文档,光标在屏幕上互相追逐,这在本地软件时代根本无法想象。web应用程序最迷人的地方,是它模糊了“使用”和“访问”的边界。你不再需要“安装”一个软件,只需要“打开”一个网址。这种转变像从买CD到用Spotify听歌——所有权让位于访问权,但体验却更顺畅了。

所以下次当你用浏览器打开任何网站时,不妨想想——你正在操作一个分布在全球多个数据中心的分布式系统,它的代码可能在伦敦被修改过,数据备份在新加坡,而你只是在上海按了一下刷新键。这就是web应用程序:一场关于计算资源的远程协作魔术,而魔术师们还在不断加码新花样。