当我第一次开始对因特网进行搜肠刮肚式的研究时,我被它的那么多些协议给迷住了——像HTTP和SMTP这些例子——它们是完全基于文本的。
一开始,这些非常奇怪的东西就触动了我的神经;文本是低效的,但却是机器而不是人,在翻译着这些协议。二进制形式的设置也许可节省掉一些字节——字节啊!——而且可以被软件更加好的管理起来。
而这之前不久,我就意识到这个决定背后真正天才的想法。当所有的东西都基于文本的时候,你同服务器交互所需要的所有东西就是纯老旧式的telnet;而这个想法,反过来意味着你可以轻松的拨开周围的麻烦,特别是这么多些个基于鲁棒性原则建立起来的网络基础设施。
使用这种方式探究事物能力的重要性是很难被夸大的。理解它们是如何工作的,是使用好它们的第一步,也是很重要的一步。当我们不能理解我们所使用的工具时,我们被迫去依赖其它能将底层复杂和丑陋的东西隐藏到可以管理它们的底下去,这样的一些工具。
在这个过程中,我们交换了创造适合于实际问题解决方案的能力,而不是把所有抽象层的问题都摆到台面上来。
我心中装着HTTP2.0的草案写了这个,它为了满足本质上是一小部分有影响力的玩家1的需求,在HTTP协议中引入了不必要的复杂性,但并不用去观察水晶球来预测未来,你可以通过观察现状的对立面来了解这些原则是如何影响到Web开发工作的。
考虑一下,例如,基于Web的API,它们是我现在所痴迷的东西。一方面,你拥有REST,它是一组简单的强调Web本身如何组织的原则。如果使用得当,它就可以同时拥有强大和易于理解的迷人特性。
相比之下的SOAP,虽然名义上是基于文本的,但却是一些幅度比REST更复杂的命令,因为它是基于人类将永远不会真的去解读和理解它,这样的观点之上来构建的。我干这事已经20年了,而我所知道的手动调试SQAP交互的唯一方式是拿着锤子还有穿上紧身衣2。唉,我带你去看看一个基于SOAP的老式的EDI交互吧,随便那一天都可以。
真正的悲剧是有如此多的人似乎并不理解这有多重要。模糊的意识和对抽象的迷恋是影响软件开发的两个最糟糕的问题;它们结合起来成了一种故意的无知,使得我们写出蹩脚的代码来。让这种事情停下来吧。
1.HTTP 2.0 是基于SPDY的,它是形式化了一些常用优化(如流水线的执行、TLS和压缩)的抽象层,并且采用二进制形式分割了一些HTTP命令。
问题是,这些优化是被良好的构建起来的,但并不被广泛使用,因为许多小型的定时器既不需要他们,也不会理解它们的重要性。通过声称那些人无论如何都将受益于它们,来证明他们的大规模引进,这可能是有诱惑力的,但是(举个例子)通过让所有服务器制造商都默认开启它们,同样也可以达到这一目的。
2.锤子打头阵,紧身夹克跟上。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务