别被术语忽悠了:云计算、框计算、SOA和REST

标签:无

今天和同学聊天时谈到了几个热门的术语,虽然一堆人追捧,但我觉得这些术语实在是没啥技术含量,所以特意写出来抨击下。如果有说错的,要反驳请随意。

首先是云计算。云计算这个玩意其实根本不是计算,而是服务。云是互联网上的服务端,你不知道其构成,只知道它提供服务。
举例来说网络硬盘就是云计算,它提供存储和下载服务,你并不关心它用什么操作系统、文件系统存储的,只关心怎么使用。
再如搜狗云输入法,你的输入法程序是搜狗提供的JavaScript生成的,词库是保存在搜狗服务器上,通过AJAX技术获取的,因此也是云计算。
再看云计算网游,这就完全是扯淡了。既然是网游,数据自然是存储在服务器端的,你也不需要考虑是用什么数据库存储的,它不是云计算是什么?
从广义上来看,所有的web服务都是云计算,你用浏览器访问一个网站时,只需要告诉服务器网址和参数即可,根本不关心它用了几台服务器,是否用了反向代理,是什么操作系统,用什么数据库。
最后看看在线色情聊天,这种毫无技术含量的东西也是云计算,因为对方是在你不知道的云端向你提供服务,而不是直接和你做。
可以说,从网络诞生的那一刻开始,云计算就诞生了,只是你不知道这个名词而已。

再是框计算。框计算可以算是计算了,因为它要识别用户需求,然后给出用户需要的结果,这的确是一个计算过程。
然而它比云计算更扯淡:云计算是你知道它要干什么,但不知道它怎么干,最后它会给你想要的;框计算是你不知道它要干什么,它也不知道你想要什么,然后它猜出你要什么,就把猜出来的结果给你,至于对不对就看你是不是想得和机器一样了。
举例来说,你在Google搜索1+1,它会告诉你1 + 1 = 2。也许你的确是想知道1+1等于几,但也可能是要找包含1+1这个短语的网页。
框计算确实很先进,但不过是人工智能的一部分而已。

接着看SOA。SOA这玩意这几年可谓是铺天盖地,在公司经常能看到SOA部门的海报,让我很无语。
它是干嘛的呢?它的全称是Service-Oriented Architecture(面向服务的体系结构)。什么叫面向服务?就是说它将颗粒度划分到服务,使用时你面对的是服务。一个企业可能有各种业务,每个业务可能有多个任务,这些任务可以通过一个或多个服务来实现。于是你将这些服务进行关联和复用,它便是SOA了。
听上去确实很有道理,但这不过是设计模式中最基础的东西。一段代码需要重用的话,你会用函数来做;一堆函数需要重用的话,你会用类和包;一堆类和包要重用的话,你就SOA了。
所以说,SOA是个很没技术含量的东西,初级程序员都知道这种思想。

然后看REST。REST也是这几年很热门的玩意,不知道的话你就落伍了。
它的全称是Representational State Transfer(表象化状态转变),听上去很高深。实际上它是将资源用URI(你可以当成URL)表示,服务器提供对资源的4种处理方式:创建(Create)、获取(Read)、更新(Update)和销毁(Delete);在多次处理中,服务器并不关心其程序状态,这个状态是由资源自身或客户端维护的。
因此它实际上就是责任的转移,将本应该由服务器干的事,交给了资源或客户端。如果是交给客户端,其中的安全性也不得不考虑;而如果是放在资源里,我觉得并没减少服务器端的责任,除非资源的状态完全由客户端来掌握(这和直接交给客户端没区别),或者是多次服务可以调用不同的服务器(在扩展性方面具有较大优势)。
不过这种技术并不新鲜,HTTP就是一个符合REST的协议:POST、GET、PUT和DELETE正好对应REST的4种处理方式,所以几十年前人们就开始REST了。
它的应用也很广泛(实际上我现在在写的一个在线杀人游戏应用就是REST),除了HTTP,还有很多支持它的。例如SAP ECC,一个会话的多次交互可能会分给多个服务器来处理,因此它的服务器端必然是无状态的;而它的用处实际上就是和数据库交互,进行insert、select、update和delete这几种处理;虽然整体上并不是完全REST的,但至少SE16这个事务基本只干这件事。
当然,我觉得REST是个很好的技术,因为它对设计的要求很高,把设计真正摆在了至关重要的环节。一个考虑不周的设计会让REST在扩展性方面变得奇差无比,而使用一般的技术,即使设计失误了,改改还是能用的。

最后再说一句,这些术语纯粹就是忽悠人的。客户都是很傻的,你弄个他不懂的词,然后尽量解释得高深点,再告诉他会有什么什么好处(例如节省时间、资源,易维护,降低使用难度),他就会决定使用了。
但作为一个程序员,你的任务不是来被别人忽悠的,否则你还是转职成客户吧。

4条评论 你不来一发么↓ 顺序排列 倒序排列

    向下滚动可载入更多评论,或者点这里禁止自动加载

    想说点什么呢?