Posts Tagged ‘Dion Hinchcliffe’

如何搭建下一代 Web 应用

December 15th, 2008

时过境迁,搭建 Web 应用连“轮子”都要自己做的时代已经过去了,如果你需要构架一套小型或者是中型的 Web 站点,现在已经不需要为服务器、机架、托管和安装系统而操心,选择一家优秀的网格托管技术提供商,再搭配一个构架在“云端”的虚拟存储服务(如果有大量数据存储的需求),挑选你自己最擅长的 Web 应用开发技术和前端呈现技术,最后再实现当下流行的各种 Widget 和 Social 接口,就能将自己的 Web 服务武装到牙齿了,而且噱头十足。

Dion Hinchcliffe 先生在他的《Tips for Building Next Generation Web 2.0 Applications》一文中为这些应用架构做了清晰的总结,indigo 将他的图稍作了一些更加概括性的调整。

新一代 Web 服务的四层架构:基础层、应用层、分布层 和 社会层

next-generation-web-infrastructure

next-generation-web-infrastructure

1. 基础层(3rd Party Web Infrastructure)

除非你有自己的机房或者数据中心,不然我们的数据就都是交给第三方托管的。按照旧有的托管概念,选择服务商,托管设备,所有的应用逻辑都在这些设备里面完成,计算、存储、数据库全部自己解决,需要大量的设备和维护人员,现在这些基础的逻辑服务可以完全交给不同的第三方公司通过网格托管(Grid Hosting)和云计算(Cloud Computing)服务来帮你实现。

我们可以把基础层想象成那些第三方已经实现好的程序模块,它们更像是操作系统提供给我的系统功能一样,程序运行空间、磁盘读写服务、CPU 调用接口和各种 IO 服务。

通过传统的网格托管,例如 3Tera 的 AppLogic,还有 MediaTemple 的 Grid-Service,在一定程度上不用为系统的分布式和访问负载担心,直接想服务提供商购买额外的负载能力就行。OpenID 可以实现统一的身份验证,现在 Google 和 Yahoo 的帐户都能进行这种认证;Amazon 的云计算服务 S3SimpleDBEC2 分别提供了虚拟的存储、数据库和应用计算托管的服务,还有 Google 最近推出的 AppEngine,你只需要将程序代码部署到这个 Web 应用容器之中,就能够使用 Google 完善的分布式网络架构了(感觉这是 Google 最伟大的一个项目了)。所以说,现在搭建一个 Web 服务最核心的技术需求已经能够完全在这些第三方的平台中完成。当然,像第三方的搜索服务(Google Coop)、地图服务(Google Maps)、消息队列服务(Amazon SQS)、即时通讯服务(Google Talk),我们也都能够将其作为基础功能整合成为自己服务的一部分。

2. 应用层(Application)

Web 服务的业务逻辑和实现方法都在应用层解决,它们在基础层提供的虚拟程序空间里面运行。套用最经典的程序开发模型——文档视图模式(MVC),应用层就是要来实现 Web 服务的数据模块(Model)、控制模块(Controller)和呈现模块(View)。

RubyPython 这两个小巧灵活的动态语言现在成了实现新一代 Web 应用的新宠,很多出色的 Web 应用都通过 Ruby on Rails 框架来实现(例如 Twitter37Signals 的所有服务),同时 Python + Django 则成为了 Google AppEngine 的首选开发框架,在这种新构架之下,编程语言的开发效率,灵活性和运行平台的支持度成为了关键因素,我们需要实现的更像是基础服务的粘合剂,通过快速的组装来提供应用,而不用去考虑语言的执行效率和语言自身有多么完美。

在数据端,MySQL 仍然是 Web 应用的主流数据库系统,但现在很多复杂的业务都被基础层所封装,Rails 和 Django 框架中的数据对象模型正在被广泛采用,提高开发效率并简化查询方式是大家使用的主要动力,当然还有像 SimpleDB 和 AppEngine 这种虚拟服务的推动作用。

在用户前端,浏览器是绝对的标准和主流,因此支持好 HTML,Javascript 和 Web 标准就不会有任何访问的障碍和方向性的选择错误,如果还需要更酷的效果,Adobe 的 Flash 会是个不错的选择,至于 Microsoft 的 Silverlight 嘛,革命尚未成功,同志还需要努力。

3. 分布层(Distribution)

新的 Web 站点和服务将不再是信息的孤岛,对外暴露自己的数据显得尤为重要,Web 应用就像生物组织内的细胞,它们获取来自外界的能量,同时也产生能量输送给整个生物体。分布层就像 Web 服务的接口,其他的 Web 服务可以通过这些标准接口接入进来,自己的内容也可以输出给其他服务。

有一点需要牢记,想让自己的服务在今后的互联网中有立足之地,开放你的接口吧,不管是 REST 流的还是 SOAP 派的,因为除了人在访问你的网站之外,还有大量的机器和服务程序对你的应用感兴趣,让自己的服务成为别人业务逻辑的一部分之后,基本算是成功了(看看 flickr 是如何开放成为全球最大的照片托管服务的)。那些开放的 APIs 是被动的等着来访问,你还需要主动出击,通过 RSS、ATOM 和 Ping 这种特性来通知其他服务你更新了内容。

各种页面嵌入的 Widgets 和电脑桌面与手持设备使用的 Gadgets 也是输出服务内容必备选项,Widget 的形式更容易被其他的 Web 服务整合,例如 iGoogle 和 Blog 的 Sidebar 上。让数据能够更加方便的输出,同时也提供给第三方数据输入的机会,这是在“分布层”应该做的最重要的事情。

4. 社会层(Social)

无论什么样的 Web 应用,最终都需要有人的参与,人与人之间的行为相互影响,自然就形成了社会效应,不管参与人数的多少还是服务规模的大小,在这个架构的最上层,就是要平滑的实现 Web 用户之间的信息流通,所以我们称其为“社会层”。

经过多年的进化,社会化的标配应用形式已经成型,Blog(文字的、图片的和视频的都算),论坛 和 各种 Wiki 形式的内容分享,它们像网站的内容骨架,无论何时都可以考虑使用这几种应用形式。现在还多了 twitter 方式的 MicroBlog 和 facebook 形式的 WebIM,也许今后会成为网站标配的一部分。

Social 的思想已经深入人心,只要有用户登录和身份的网站就会好友关系(Friends List),好在 Google 已经为大家准备好了 OpenSocial 标准和 FriendConnect 服务,还有 facebook 的 Connect 服务,这两个公司致力于维护用户身份的唯一和好友关系的统一,无论在哪个网站上登录,你就是你,你的朋友也都是那些老朋友,不用重复填写档案信息,也不用重复添加好友,很理想,很完美主义 …

不管是 Google 帮还是 facebook 派,或者始终特立独行,社会性的 Web 服务都需要有好友关系、用户档案(Profile)和用户活动流(Activity Stream),在还没有行业标准的情况下,可以使用 Google 的 OpenSocial 格式来输出和提供接口。这些用户的数据会被订阅,被聚合网站读取,或者被其他的服务分享,拥有这些数据的人就会更乐于推荐和使用你的服务,所以让用户的数据在不同的服务之间流动起来,这个才是网站社会化的精髓所在。

除了技术架构之外…

当然,构建优秀的 Web 应用,只靠清晰的技术架构是远远不够的,你需要对 Web 2.0 有深刻的理解,熟悉 Web 2.0 的编程思想、知道 如何激发网络效应利用好集体智慧,还需要拥有优秀的团队,适合新网络应用的 产品开发方法 和 简单易行的处事方法(Getting Real 一些比较好),最后还需要一点点运气和机会。

这篇文章是根据 Dion Hinchcliffe 先生在 Web 2.0 Expo ’08 大会上的关于 “Building Next-generation Web 2.0 Applications” 议题的整理。大家对下一代 Web 应用架构有什么建议或者想法,都可以在这里留言交流 :)

如果您订阅了 “indigo 的 数字镜像” 或者经常访问,点击这里就可以加入 indigo 的 friend connect,成为小站的一名成员,让 indigo 和大家都认识一下浏览器前面的你

产品开发 2.0

October 28th, 2008

按照 Dion HinchcliffeProduct Development 2.0 整理翻译

自从 Web 2.0 这个词汇被创造出来之后,2.0 就成了最时髦的后缀,虽然有被媒体滥用的嫌疑,但是作为一种思维和模式转变的标志,我们可以把很多有类似特征的转变都称之为 2.0 版。

什么是“产品开发 2.0”?把 Web 2.0 中三个最核心的特点:集体智慧,用户创造和应用即平台的概念引入到传统的产品开发过程中去,提供一种开放式的开发架构,让用户更多的贡献想法和内容,构建他们自己想要的,甚至是直接让用户来决定产品的关键功能;同时利用 Web 2.0 大潮下的新工具和新的商业模式,以最快速的方式为用户提供更好的产品与服务。

Product Development 2.0

从产品开发 1.0 到 2.0 的主要变化

产品开发 1.0 产品开发 2.0
主要的客户沟通渠道 电话,邮件,面对面沟通,广播形式的媒体(印刷,电视与电台),电子邮件 互联网,电子邮件与即时通讯
创新之源 组织内部 你的客户或者用户
更新周期 以月或者年为单位 每分钟,每小时,每天,每周
内容的创建者 内部的制造者 外部的制造者
反馈机制 市场调研,满意度调查,投诉,观察小组 数据分析,在线问卷,用户贡献的变化
客户参与的方式 受控的,良好定义的过程 自发与混乱的
产品开发流程 预先设计 更少的预先设计,更多的随机应变
产品架构 封闭的,围墙里的花园,不是为扩展和复用而设计 开放,非常容易被扩展和重新定义,可以被修改和添加,生态有好的,为能够被复用与 mashup 而设计
产品开发风格 分层级的,中心化的,创新与我无关,有一点点协作,专家驱动的 平等主义,非中心化的,用混合复用代替重复制作,高度协作的,集体智慧
产品测试 来自内部的,专用的测试小组和一手挑选的测试客户 用户就是测试者
客户支持 客户服务 用户社区
产品推广 单一的市场与广告行为 虚拟化的传播,利用好网络效应,制造热门词汇,让你的用户口口相传
商业模式 实实在在的销售产品,提供客户服务和收取支持费用,为那些需求最多的功能去提供产品 广告,订阅方式的服务租用,产品销售,服务所有的细分市场和各种意想不到的应用
客户关系 内在的买家(消费者) 合伙人,随着报酬的提高成为供应商(消费者也是生产者)
产品所有者 机构,特别的高级管理层,股东 整个用户社区
建立伙伴关系的过程 正式的,明确的,少见的,需要中间媒介参与的 对等的,数以千计的在线合作伙伴,无需中间媒介参与的
产品开发与集成工具 重量级的,正式的,复杂的,昂贵的,消耗时间的,面向企业级的 轻量级的,非正式的,简单的,免费的,快速的和面向最终消费者的
竞争优势 卓越的产品,法律的壁垒(知识产权保护),品牌优势,价格,受欢迎程度和销售渠道协议 成为市场上前两名的领导者,有效的利用“群体外包(crowdsourcing)”的优势,大规模的定制,控制那些难以被再创建的数据,最终用户的主人翁感受,受欢迎程度,高效的用户自助服务,参与者的规模,出类拔粹的参与式架构,健康而且浓厚的社区文化

利用 Web 平台来改进产品流程

我们正在从面向计算的时代往面向沟通的时代过渡,所有的设备都可以和网络相连,那些封闭的,流程化的和机械的至上而下的产品开发方式正在被网络和新兴的 Web 技术影响而改进。沟通成本的下降和沟通效率的提高,让大家可以更加平行对等的交流,Email、IM 还有那些基于 Web 的 Wiki 与项目过程管理系统(37SignalsBasecamp 就是新协作系统的代表)。选择正确的 Web 平台和技术,改进产品团队的沟通, 更加灵活的适应需求的变化,让用户方便的反馈信息并且跟踪用户行为,改进体验,Web 平台的流行让我们拥有了比以往任何一个时候都要便捷高效的产品开发环境。

用户也是产品的创造者

在任何时候,都不要把你的用户单纯的看做是产品的使用者。用户能够成为产品的免费客户服务、推广者、内容制造者、甚至是创新之源。这一特征在互联网产品上尤为突出,用户在使用的同时也创造了内容,大量的参与触发了大规模的网络效应。XM Radio 在他们的卫星信号收音机中植入了用户电台排行榜(Top 20 on 20 Channel),通过用户的收听来决定那些电台更好听,在一个原本固化的硬件设备里面添加了互联网特性,让用户的行为来影响产品的内容,所以 XM 做出了全球最酷的收音机。

为产品建立浓厚的社区文化

Hinchcliffe 先生并没有在原文中提到这个观点,但是在 Web 时代,建立一个成熟的产品社区尤为重要。许多大型企业往往忽视这方面的业务,而 Apple 则是这方面的成功者,还有 Linux 和其他的开源产品。他们围绕其产品创造了一个专门的,热情的社区,并且从长期来看,最终得到了回报。要创建热心的用户社区,离不开高质量的产品和服务,除此之外,还需要一个积极健康的文化,你产品的用户需要认同你的品味、举止、知识和价值观,来形成一个有高度认同感的社区。当然,并不是所有的产品都有健康的社区,微软一个很好的例子,它们拥有不良的社区文化,这种文化主要是由于微软长期的对外强制政策和自身的品味(Jobs 常说 Bill Gates 最缺乏的就是品味)所形成的。所以说,如果你的产品形成了一个健康而且强大的社区文化,这才是产品最大的竞争优势!

关于原文作者

Dion Hinchcliffe 是研究 Web 2.0 在企业方面应用的最有影响力的 Blogger 之一,他在 ZDNet 上负责 Enterprise Web 2.0 的专栏博客,有大量关于企业与 Web 2.0 如何结合的文章,不过 Hinchcliffe 先生的文风比较随意,部分表述有些晦涩难懂(对于非英语母语的人来说),如果逐字逐句的翻译,恐怕大家就都看不懂了! 所以 indigo 翻译 Hinchcliffe 先生的文章大多都是全文重组过的,在保留原文作者主要观点的基础上,添加了一点点自己的补充

更多 indigo 翻译的 Hinchcliffe 先生的优秀文章

社会媒体走向主流

March 19th, 2007

原文链接:Social Media Goes Mainstream
原文作者:Dion Hinchcliffe

大家总是在争论主流的确切定义到底是什么? 我个人觉得那是当我的爷爷奶奶和他们的孙子们同时在讨论什么的时候,这就是主流。那些由用户创造内容的媒体平台所具有的特点不仅于此,还能够将所有传统意 义上的东西推入历史的舞台。是的,我在谈论 blog,也是在说 wiki 以及任何这样的平台,被用户所控制的参与性工具正在拥有互联网络的国家和几乎全世界的人民里面蔓延。

在我拿出那些主流的共享与协作媒体的实例之前,我们应该弄清楚最符合这种媒体形式的“社会媒体”的定义。Wikipedia 上面对社会媒体这个概念有个简单清晰的解释, 它是这样描述的:“社会媒体是人们彼此之间用来分享意见、见解、经验和观点的工具和平台。它能够以多种不同的形式来呈现,包括文本、图像、音乐和视频。流 行的社会媒体的传播介质包括了 blogs(博客)、留言板(论坛)、podcast(音频播客)、wiki 和 vlogs(视频播客)”。这里最关键的一点就是曾经受那些组织和大型机构控制的工具和平台,现在的控制权回归到了最终用户的身上。进一步来说,我认为社 会媒体比较合适在网络环境下存在,尤其是在互联网上,当然那些在防火墙后面的网络也行。为什么网络的因素如此重要呢?最主要是因为网络拥有一个真正民主的结构和低廉的成本;任何人只需要接入网络并花费一点点时间就可以参与到一个会话里面。现在通过电脑网络的沟通接近于免费,再结合由网络效应驱动的参与模式(中文翻译:Web 2.0 的秘方:网络效应),这些将使得社会媒体平台成为有史以来最强大的媒体形式。

The Emergence and Rise of Mass Social Media in the Web 2.0 Era

今天,任何人都可以将任何事情发布到一个简单的blog上,让后让它们自动的传递到11亿互联网用户那里。通过同步(syndication)技术,这种社 会媒体内容(例如一篇blog文章)可以被互联网上各式各样的 feed 引擎获取并进入他们各自的同步生态系统,任何用户都能够通过像 Technorati, Google Blog Search, TechMeme 或者是一堆其他有创意的服务来发现这些信息。最终,在印刷技术发明了数百年之后,大家都可以在数以百计的免费 blog 站点上,花上一点点时间去创建一篇 blog,让它真正的传递到全球所有观众那里。我要强调的是就在过去的一段时间里,社会媒体已经被成功的应用在突发性的和早有预谋的这两种形式事件的传播 上,从 寻找自然灾害的幸存者激发用户 集体为那些大企业去创造视频广告内容。 Continue reading 社会媒体走向主流…

超越用户创建的模式:Web 2.0 和语义网络

December 24th, 2006

原文链接:Going Beyond User Generated Software: Web 2.0 and the Pragmatic Semantic Web
原文作者:Dion Hinchcliffe

我们现在已经开始目睹一些公司网络服务能够自动的帮助用户进行网络导航,将不同的在线信息重组成全新的、有用的结果。更有胜者能够按照当前的环境动态的产生 Web 应用,与 Web 生态系统产生完全的交互。就像那些能够自我组装的应用程序,它们能够帮助人们完成假期计划、管理个人日程、甚至编制更加复杂的商务应用流程,和在现实世界 中完成项目一样。这种景象有点科幻,但是我们拥有内容如此丰富的 Web,通过数量繁多的开放API接口、那些大量而且原始的数据,完全有打开这扇通往未来大门的可能性。

背景阅读:看看 8 个最终用户的混合应用平台(mashup platform)

我最近写了不少关于用户创建软件(user gernerated software) 的发展趋势的文章,利用 Web 2.0 时代的开发性,与各种 Web 服务进行交互,有价值的应用就能够被最终的用户所开发出来。但是我们现在已经能够看到下一个趋势的浮现:软件自己可以智能的创建应用和完成任务。Tim- Berners Lee 自己也预见了这种语义网络(Semantic Web)时代的到来,他在几年前的《科学美国人》上就提出了对这个概念的支持,也有不少的公司在以此为目标,但直到到现在这种模式的网络还是没有在大范围内被成功的实践。这个原因很复杂,但似乎在于我们从 Web 1.0 那里所学到的;一个首选的解决方案通常不是最正确,但那个备选的却是

trends in webapps

很多人可能会说现在已经有超过1200多个“混合应用”(mashups)被列在 Programmable Web 的趋势表上,它们之中绝大多数都不是用户创建的,只要看看那些在 MySpace 和各种主流的社会网络上广泛流行的小徽章(badges)和小组件(widgets),看看人们每天不辞辛劳的在他们的blog和空间上耕作,修改内容、 调整代码、从互联网的各个角落寻找 RSS feeds,并把它们放在里面。虽然我们现在可以看到这么多活跃的最终用户的”混合应用”,但这些都比较浅显,并不能够体现更较深的层次上的功能性,不过 我们可以看到那些新的工具正在一天天的变强大,允许用户更加深度的控制,创建出一个真正的“混合应用的生态系统”(mashup ecosystem)。 Continue reading 超越用户创建的模式:Web 2.0 和语义网络…

Web 2.0 定义的更新与企业 2.0 概念的浮现

November 19th, 2006

原文链接:Web 2.0 definition updated and Enterprise 2.0 emerges
原文作者:Dion Hinchcliffe @ 4:19 pm, November 5, 2006

在这周二举行的 Web 2.0 年会上给下一代的网络应用程序的概念做出了很重要的更新。因此,这次会议在准备阶段的主要事情不是将会议的名字改成 Web 2.0 峰会,而是更加确切的讨论 Web 2.0 到底是什么,什么让业界为它如此的如此的疯狂。

就在上周末,一份名为《Web 2.0 原理和最佳实践》的100页左右的新报告对外发布了,它主要由 Programmable Web 的 John Musser 撰写,同时还得到了 Tim O’Reilly 和 O’Reilly Radar Team 的大力支持。就像很多读者所知道的,O’Reilly Media 最早在2004年提出了 Web 2.0 这个概念,并且在2005年通过一份只有5页纸的短文(What Is Web 2.0)描述了它成功的设计模式和 Web 今天所浮现出来的商业模型。今天的这份新报告,并不是对以前那份短文的继续鼓吹,它是一份有用的商业报告,通过多种方式更加清晰的诠释了 Web 2.0。

 

An Anatomy of Emerging Networked Software Models at the Beginning of the 21st Century: Web 2.0 and Enterprise 2.0

首先,这份报告深入的阐述了正在改变中的 Web 给特定市场所带来的驱动力,这些改变 Web 的技术也被成功的应用到了今天的 Web 站点里面。这些驱动力包括了接近10亿互联网用户中文翻译)、数量飞增的联网设备、用户对网络的更加依赖、结合紧密的网络生态系统等等。报告还通过大量的背景文章特 别的量化了所有这些趋势,也包括了那些在之前的 Web 2.0 定义里面没有交代清楚地地方。

其次,报告提出了关于 Web 2.0 的五条秘密,人们经常苦恼于如何把这些 Web 2.0 技术运用到他们自己的产品和服务里面。我最欣赏的是第三条:“最重要的就是用户的参与”。为什么用户要来参与呢?你需要通过某些下游的重用(实际生活中的 使用)来驱动,或者是能够传递真正的价值,再或者就是能够触发网络效应。但结果是大家对 Web 2.0 的技术充满了误解(认为 Web 2.0 所需要的就是 Ajax 或者是一个社区之类的),但这些却能够帮助他们解决不少问题。

第三,值得注意的这份报告还提到了企业 2.0这个概念的优势,它是基于 Web 2.0 技术的网络软件在组织和商业中的使用。Andrew McAfee 一直致力于为企业 2.0 提供清晰和简洁的解释,而其他还利用了他的”SLATES” 来指导大家创建和获得企业 2.0的应用软件。

SLATES 描述了将企业搜索(search)和发现(discovery)进行有效的结合,通过 Web 模型中的链接(links)来把信息连接成为一个有意义的信息生态系统,为企业内容的创作者们(authorship)提供一个低障碍的社会工具。标签(tags)可以让用户创建一个自组织的结构,提供一个像 Amazon 的推荐系统那样的智能内容建议扩展(extensions),同时利用信息通知(signals)让用户知道他们所关心的企业信息的发布与更新,例如企业内部的 RSS 输出。

虽然 SLATES 呈现了企业 2.0的基础框架,它并没有否定更高级的 Web 2.0 设计模式和商业模型。在这方面,O’Reilly 这份关于 Web 2.0 的新报告将企业 2.0方面的概念融合到 Web 2.0 之中的做法给人印象深刻。里面包括了关于自服务IT(self-service IT)的讨论,企业 IT 对长尾的需求,还有其他许多在 Web 2.0 时代能够应用于企业的重要应用。这篇报告同时也提到许多值得推荐的刚起步的小项目和评测结果,在一个相当长的列表里面。

这份报告真正有意义的部分是需要购买的(这里有一个摘要可以下载),值得庆幸的是之前那5页纸的短文中所提到的观点基本没有什么变化。事实上,这篇报告更加深入的解释并推荐了一些如何把 Web 2.0 应用到你的产品和服务中的方法,我想这些才是业界真正需要的。

最后,出于对公共教育的兴趣,我把这个报告中关于 Web 2.0 的八个核心模式在这里列出来,同时给出一些有意义的描述:

  • 驾驭集体智慧:有时候我们将这个称为 Web 2.0 的核心模式,这个就是参与的架构(Architectures of Participation:中文翻译),它通过有效的触发网络效应(中文翻译)和回馈来创建一个让人们能够更好使用的系统。
  • 数据是下一个”Intel Inside”:这句话表示了数据将变得越来越重要,它的重要性已经超过了软件本身,这个残酷的现实你必须得接受。
  • 在组合中创新:Web 正在变成一个由一片片小的数据和服务汇集而成的集合体,彼此之间松散结合,这样增加了重组的可能性和对系统与信息的无意识的使用。
  • 丰富的用户体验:Web 页面的进化将超越现有的HTML标识方式,并且能够拥有完全像软件那样体验,创造交互的新方式。
  • 软件将不会在单一的设备上提供:软件会是博客联盟群体(blogosphere:数量众多的Blog平台和聚合者)那样的水平模式,或者是像 iTunes 那样集成的垂直模式(服务器场 + 在线商店 + iTunes 客户端 + iPods 设备),这些都将改变我们软件的前景。
  • 永远的 Beta 版:软件分版本的发行将不复存在,持续更新才是新的规范。
  • 撬动长尾的力量:有效的通过 Web 来提供对微市场的服务将是”杀手级商业应用”之一,Internet 现在的形式将这种应用变成可能。
  • 轻量高效的软件/商业模型:从 Amazon’s S3 到 RSS、到 Ruby on Rails,在线软件开发的经济学模式正在发生变化,它给新的玩家提供了强大的新武器来对抗现有的对手,甚至是整个行业。

大多数人都同意 Web 会继续进化。你觉得什么才是最重要的改变呢?