现代Web发展趋势和前沿技术综述

2017-10-28 10:31:30来源:oschina作者:FeanLau人点击

分享
第七城市

本文的叙述过程分为两个部分,第一部分是现代Web发展趋势,第二部分是Web的前沿技术综述。现在先来阐述第一部分:现代Web发展趋势。


现代Web发展趋势

从网络在不同的发展阶段扮演的角色,现代Web发展阶段可以简单地分类为Web1.0、Web2.0、Web3.0。Web1.0中,网络是信息的提供者,单向性的提供和单一性理解;Web2.0中,网络是平台,用户提供信息,通过网络,其他用户获取信息;Web3.0中,网络成为用户需求理解和提供者,网路对用户了如指掌,知道用户有什么、要什么以及行为习惯,进行资源筛选、智能匹配,直接给出答案。


web1.0的特征

Web1.0类型的网站的口号是“内容为王”,网站的目标是用内容来吸引眼球。这种思想也是传统媒体思想的一种延续。但是,在网络中,人与内容之间的关系常常受到超链接等外部因素的干扰,因而呈现出偶然性、随意性与跳跃性,而信息超载也使得内容对于人的持续吸引力不断减弱。也就是说,在网络中,人与内容的关系往往是不稳定的。有时,反倒是形式(例如界面风格)对人们在网络中的行为方式产生较强的制约作用。


Web2.0的特征

Web2.0则试图把人与内容的关系深化为人与人的关系。Web2.0指的是一个利用Web的平台,由用户主导而生成的内容互联网产品模式,为了区别传统由网站雇员主导生成的内容而定义为第二代互联网。Web2.0中,用户参与网站内容制造,网站的内容通常是用户发布的,使得用户既是网站内容的浏览者也是网站内容的制造者,这也意味着Web2.0网站为用户提供了更多参与的机会。Web2.0是互联网的一次理念和思想体系的升级换代,由原来的自上而下的由少数资源控制者集中控制主导的互联网体系,转变为自下而上的由广大用户集体智慧和力量主导的互联网体系。


Web3.0的特征

Web3.0最大的特点在于信息的聚合以及提供个性化的信息服务,真正的Web3.0时代不仅仅是按照用户需求提供综合化服务,创建综合化服务平台,更关键的是,提供基于用户偏好的个性化聚合服务。例如,搜索引擎的个性智能化,用户不用分析和试验如何组合关键词语 , 只要把想要的东西列出,与个人的偏好和背景连接,搜索引擎就能把适合的数据提供出来,更快捷地搜索信息,解决问题,同时用户可以自由定制搜索聚合结果。Web致富Tim Bernerslee提出“Web3.0 is something called the semantic web(语义网)”,语义网是指将全部的信息、资源、知识分散各地,以内容的形式连接成网。Web2.0的信息通过Web程序中的标识代码实现站内互通,而Web3.0将信息的互通进一步深度挖掘,直接从底层数据库进行互通。随着人工智能、大数据的发展,基于统计的机器学习技术,Web3.0将会更加理解用户需求,提供更加智能的信息推荐。


前面从特征的角度,分别阐述了Web1.0、Web2.0和Web3.0的不同特点,简要的阐述了现代Web的发展趋势,下面的内容将讨论Web的前沿技术综述,讨论实现Web的技术的发展。


前沿技术综述

我从2013年就开始做Web技术方面的工作,而近几年主要是想转到Web推荐系统的方向。作为一名Web开发者,我曾在PHP和Java技术栈上开发Web应用和Web服务。最近,我将Web技术和开发趋势作为整体研究了一遍,在这里分享一下我的想法和观察结果。首先,让我分享一些我所观察到的可用性和体系结构目前的趋势。


前端发展的综述

前端里面近年来最流行的词语就是HTML5、CSS3、ECMAScript6技术,带来了前端技术的井喷式发展。


HTML5中的5代表版本号,我们可以简单地理解为第五代HTML标准(实际在HTML5之前有非常多的次要版本更新),这一代标准提出了很多重大的功能更新,例如:Canvas、WebSockets、直接的多媒体支持、硬件加速支持、本地存储的支持等功能。HTML5的发展越来越迈向成熟,许多的应用已经逐渐出现在你我日常生活中了,不止让传统网站上的互动Flash逐渐被HTML5的技术取代,更重要的是可以透过HTML5的技术来开发跨平台的手机软件。HTML5的优势有:文档声明简化;新语义化标签;很好的替代Flash和Silverlight;SEO的友好性对于一些网站,特别是那些严重依赖于Flash的网站,HTML5是一个大福音。HTML5的发展机遇带来了网页游戏的发展和移动终端的普及。


CSS3.0是CSS技术的升级版本,CSS3.0语言开发是朝着模块化发展的。以前的规范作为一个模块实在是太庞大而且比较复杂,所以,把它分解为一些小的模块,更多新的模块也被加入进来。这些模块包括:盒子模型、列表模块、超链接方式、语言模块、背景和边框、文字特效、多栏布局等。


我最早是从jQuery开发开始的JavaScript的学习,到现在的AngularJS、Vue.js和React.js的流行,体会到AngularJS开发的好处,组件化开发的好处,AngularJS和Java的思想非常的像,开发Java编程的人能够平稳过度到AngualrJS的程序。jQuery流行起来的最根本原因是DOM选择器,DOM选择器加上事件的操作。但随着页面的事件交互的复杂,jQuery的代码将会变得不好维护,AngularJS就是为了解决这样的问题诞生的,与jQuery事件驱动的思路不同,AngularJS采用数据驱动,采用组件化开发,对于大型的前端页面,将会变得好维护起来。


另一方面,ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。ES6中引入了class类的关键词,也就有了import、export、extends等关键词,与类class配合使用。撇开具体语言细节不谈,ES6整体的代码风格非常容易上手,与Java、Python、Ruby等高版本的语言风格非常一致,给人的映像是学习的带入感很强,方便学习。


另外一点,前端的发展开始向后端发展,随着Node.JS的产生,Node.JS可以写服务端的任务了。Node.js是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js使用了一个事件驱动、非阻塞式I/O的模型,使其轻量又高效。Node.js 的包管理器npm,是全球最大的开源库生态系统。基于Electron搭建Web/Desktop应用会更加常见,仅仅使用JavaScript,HTML以及CSS,搭建跨平台桌面应用。


可用性的综述

如今,用户体验变得比以往更重要,响应式网页设计(Reponsive Web Design)也成为了网站必备的特性。RWD响应式网页设计 能让最终用户在不同尺寸的设备上访问网站,包括手机和平板浏览器。有了响应式网页设计取代移动网站,我们便无需为移动用户单独开发额外的网站。特别是当我们需要把焦点放到如何呈现内容时尤为有用。但如果你是在开发Web应用(包含着大量UI交互流程)而不是网站时,响应式网页设计就帮不了你了。记住Web应用与网站是不同的。Twitter的Bootstrap与Zurb的Foundation算是目前最流行的响应式网页设计框架。如果你要针对移动用户开发APP,我会建议使用轻量级的框架比如Yahoo的PureCSS。


应用程序架构的综述

企业中的移动优先策略同样影响到了Web开发架构。当一个组织在开发Web应用与 Web服务时,他们会以自身的移动策略作为主方向调整。且如今,Web API已成为Web应用和移动应用的中心,开发者会在服务器端建立RESTful服务,然后基于RESTful服务为 Web 和移动开发前端应用。Web变得无处不在,不会因为桌面端的衰退而退缩,Web以支持云服务的形式继续发展。


API驱动开发的综述

在移动领域,API(特别是 RESTful API)已成为 Web 应用的关键部分,而服务器端的实现已变成薄薄的一层,只提供数据和安全相关的 API 。这些 RESTful API 并不受限于 Web 应用,移动应用同样可以使用。所以说现代 Web 开发人员编写的服务器端代码同时用于移动应用和Web应用,给予了我们更多的机会。这里的另外一个趋势是移动后端云服务的兴起,如Parse和AzureMobileServices 等的服务(MBaaS)云平台解决方案。这些MBaaS平台可针对多种特定移动后端服务的数据模型提供自动的RESTful API 。我们可以使用MBaaS 服务开发Web应用,因为它们不仅提供RESTful API ,伴随着移动SDK还提供了JavaScript SDK 用于HTML5客户端。未来,我坚信MBaaS服务将广泛用于Web应用和移动应用。


Web技术栈的综述

几年以前,动态类型语言如Ruby、Python和PHP已经吸引了许多创业公司。直到几年前,Ruby on Rails (以下简称ROR)真是Web开发的一场革命。ROR框架这样极其复杂的框架,它由无数顶级高手成年累月的心血堆砌而成,融合了Web开发领域内几乎全部的最佳实践。Ruby语言的优势是可读性非常好,做Web应用系统的代码量小。但是由于Ruby语言自身的缺陷,ROR的性能和内存占用不理想,规模效益不高。Ruby作为动态语言在大团队开发上存在劣势,不能像Java有接口和静态类型检查。近年来Ruby语言呈现出衰退的趋势,Ruby几乎只能做Web开发,其最佳的适用场景正在慢慢被其他的语言取代。


Python做Web方向从来也没有热门过,但是Python做Web也没有衰退,因为用Python的人很多,自然有人就会用自己熟悉的语言Pyhton去做Web方面了。Python流行起来的根本原因是Python在科学计算、计算机视觉、图像处理、运维脚本等领域是非常强大的胶水语言,相关的模块支持非常地多。Python语言做模型非常的快。


总是有人在黑PHP,但是PHP在Web开发领域的地位是无人撼动的。PHP语言本身是不错的,对于web应用一直都是最佳的选择,而且近年来Composer, PSR, PHP7带来了颠覆性的变化。PHP兼具无需编译和热部署这两点,就让人无法拒绝了.再加上PHP弱类型,内置模板引擎和丰富的库函数以及强大的哈希表,决定了PHP的学习/开发/运维成本远远低于Java等其他Web开发语言。首先PHP确实是开发速度极快,为什么?因为弱类型(PHP7有类型声明选择开关,只要引入开关指令declare(strict_type=1)就会强制当前的文件下的程序遵循严格的参数类型,返回值类型),不需要定义返回的类型,加上PHP实际开发过程中喜欢运用它万能的数组来做计算,返回。所以他的动态扩展性非常强,如果返回值结构改变,没关系,直接改数组结构就行(注意,PHP数组太强大,可以当作Map,List来用,底层的实现其实是HashMap)。


Java老牌语言,大数据和Hadoop的首选。JAVA的优点在于成熟,任何技术,任何需求,包括与各种硬件打交道的接口。都有相对应的方案,或者开源项目,拿来可以用,比如POI操作。Hadoop,Spark和Storm是目前最重要的三大分布式计算系统,Hadoop常用于离线的复杂的大数据处理,Spark常用于离线的快速的大数据处理,而Storm常用于在线的实时的大数据处理。不过Hadoop有成熟的生态圈,而Spark的话虽说处理速度快,但还相对不太稳定。而Java可能要开发过程可能要慢一点,Java面向对象的技巧,设计模式会运用的更多一点。需要定义各类Model来适应你业务的需求。编写风格会有一定的统一要求。强类型在编写的时候会比PHP麻烦,但好处是更安全,因为类型固定,潜在风险较低,还有编译器给你做了一次保障。


许多创业公司已经利用RoR和Python的Web框架开发出各种创新的产品。但如今有趣的是,由于性能和可扩展性的难题,这些应用程序正被其它的Web技术栈重建。在大型应用程序中使用动态类型语言就像在喝加了太多糖的饮料。开始的时候,糖的甜味会比较吸引人,但长期来看就会伤害到应用程序的健康。今年,我们已经看到很多企业采用Node.js尤其是用于构建备受关注的移动应用后端服务。大企业如领英(LinkedIn)和沃尔玛(Walmart)正在使用 Node.js 加强它们的移动后端服务。作为一项新技术,Node.js 真是 2014 年采纳市场的赢家。Node.js 也是移动后端服务(MBaaS)云解决方案的首选技术栈。今年我们也看到许多基于 Node.js 的命令行工具被用于前端开发。Node.js 的崛起与 Ruby 栈的衰落是今年最值得注意的趋势


Dcoker容器技术的发展

在2013年3月,Docker项目正式开源。短短的三年中,Docker已经迅速普及开来,云计算、大数据、互联网等相关IT技术公司纷纷开始拥抱Docker。在硅谷,有200多家Docker相关的创业公司。Google、Microsoft、AWS、IBM等大型技术公司都已经加入Docker生态圈,开始使用Docker,并为Docker社区共享。OpenStack、Hadoop等云计算、大数据框架也开始向Docker迁移。


在国内,从Docker诞生之日起,各大技术公司和极客们就开始紧密关注这项技术。从2014年下半年开始,陆续有公司开始把现有系统迁移到Docker平台。BAT、华为、新浪、京东都有Docker相关产品上线。Docker的普及愈演愈烈,大有掀起第二次云计算革命之势。


通过在实际项目中使用Docker,发现Docker天生就是要解决敏捷开发、持续集成、持续发布、动态迁移、动态伸缩等互联网、云计算、大数据行业普遍存在的问题。通过把产品容器化,加速了开发、测试、发布的流程,产品发布时间从半天减少到47秒。通过镜像提交产品,解决了开发、测试、发布的环境异构性问题,使产品可以平滑地在各个部门之间传递。


Go:2017及未来的技术

最近出现了许多用Go开发的优秀应用,包括Docker和Packer.IO。我预测Go将会在各种不同的社区中产生巨大的吸引力,包括 Java、Ruby、Python和Node.js。Go是静态类型语言却提供了动态类型语言生产力的灵活性。在Go语言中,并发性是核心编程语言的一等公民。类似C和C++,Go编译成原生机器码;而不像Java和.Net,它不需要任何JIT编译。我爱上了Go的简单性、实用的设计和相当好用的包系统。也许它不适合构建传统的Web应用,但绝对适合做提供RESTful服务的HTTP服务器。在未来,你也许还可以用Go开发Android 应用。Go 的优势是它是一种通用编程语言,可以用于任何可能的场景--包括系统编程和大型分布式商业应用。我强烈感受到Go是属于云时代的分布式、并发、并行计算的语言。Go可以在企业中成为下一个Java。


参考文献

[1] http://www.bootcss.com/


[2] https://purecss.io/


[3] https://foundation.zurb.com/


[4] 向阳. Web1.0与Web2.0比较研究[J]. 计算机光盘软件与应用, 2011(3):8-8.


[5] 周珍妮, 陈碧荣. Web3.0——全新的互联网时代[J]. 科技广场, 2008(7):235-237.


[6] 徐璐, 曹三省, 毕雯婧,等. Web2.0技术应用及Web3.0发展趋势[J]. 中国传媒科技, 2008(5):50-52.


[7] 刘林霞, 杨馨. 计算机网络服务器硬件和操作系统的发展趋势分析[J]. 信息与电脑:理论版, 2010(6):86-86.

第七城市

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台