webSocket&rest以及未来的web

现在的web其实已经和过去不同了。大体上来说,web应用更倾向于提供某种服务而不是提供某种应用。这一点和之前有很大的区别,在早期的时候2000年左右,那个jsp时代,应用和web是混杂在一起的,web应用总是和界面杂糅,似乎web就应该是这样的。

而基于web的服务,其实并不关心界面的问题,他仅仅关心他自己能够提供什么样的服务。特别是rest的提出,加深了这样一个概念。通过web服务,你可以很轻松的把你的一些不错的应用通过发布出去。而且这种松耦合的好处还在于可以比较轻松的集群,从而获得良好的伸缩性。

而对于web应用来说,服务,界面,数据其实是永远的核心,任何应用也跳不出去这个圈子。nodejs这个时候出现了,这是一个无以伦比的适合做web的语言。node.js+socket.io(websocket)使得整个前台后台之间的界限非常的模糊,由于都是通过一种相似的事件方式工作,你可能感觉不出来他们之间的区别,而且传递的都是json对象,工作起来那是十分的方便。而且javascript这种特殊的语言,它有限的持之多范式的编程,既有函数式的特征又有对象的特征,而且支持对象字面值这种大杀器,直接导致你的代码量很少,却可以做更多的工作。所以对于nodejs来说,使用socketio即自然又高效。不过不太容易把应用发布称服务。

rest的最大的优点就在于其标准性。用任何的语言通过web的接口都比较容易的和rest的服务通信从而获得数据。当然这一点websocket也可以做到,只是可能会比较麻烦,我倾向于同时提供两种接口,这对于nodejs来说,其实仅仅是一件小事而已。rest的缺点是显而易见的,总的来说就是啰嗦,冗余信息大多,速度缓慢。效率很低。

所以一个现代的web应用应该是由几部分可以伸缩的单独的服务组成,大体分为数据服务(Hbase,hadoop,传统关系数据库),应用服务,界面(nodejs+某种前台js)来构成,这样的系统伸缩性很强,因为选择多,从而成本也更低。至于ssh..以及类似这种东西,统统都应该丢进垃圾堆了。甚至java我觉得都应该少用。数据服务这一层建议使用clojure,它有好的并发能力和良好的数据变换能力。应用服务,应该使用scala语言开发,它简洁,有力,actor模型也比较好。所以未来的web应用,必然会使用多种语言开发,这样可以提高开发效率以及减少维护的成本。因为代码量少了,自然维护就容易了。多种语言在不同的服务层面上开发,必然会导致代码量急剧减少,从而极大的消减维护的成本。未来的大web应用可能仅仅需要几个人来维护。

转载于:https://my.oschina.net/clarkhill/blog/159275

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值