这些年,一个在找一个中意的框架和技术,试用了许多,都不满意。
当然,他的意思当然不是说这玩意一无是处,实在是我们用错了地方。
XML这种语言发明的本意是什么?
本意有两个,一个叫自我描述,意思是说,如果有一天,地球被一个小行星给撞了,虽然地球没大事,但人类灭绝了。
外星人来地球,他们想了解一下我们的文明,打开硬盘,找到的是XML信息,而不是二进制信息。
第二个目的,是XML的本意:使记算机能理解!!!!!
可是,现在我们看看,我们在干什么?许许多多的地方,在用XML存线性数据,在用XML作为传输议,其中一个最恶心的就是web serivce 中的wsdl.
soap,好吧,简单对象传输出协议。
这些真是纯粹垃圾。一无是处,不是最糟的,最糟的是,一无是处,但却被许多人接受。
XML的一个问题,就是它的唐僧本质——太罗索。
而且,XML 是给计算机看的,本质上来讲,人只是将就看就行了。可读性也极差。
而且,XML相当难解析。当然,这是计算机的事,我们人类不关心。但linux对这一点也表示不满。
当然,在个人看来,XML有其意义,比如用xml来描述本地文档,如word,这是对的。
再比如,在网页上,嵌入MathML,这也是对的,数学公式,这样的专业性强的,定式的文档性的,用XML来描述,是相当正确的。
记得有本书里,提到,我们可以用XML来描述一门语言,这当然是废话:所有的计算机语言都是基于正则表达式和巴斯科。诺尔范式,当然XML能描述,但我说那还读吗?
所以,幸运的是,没人真的这么去做,大家总算是松了一口气。
当然,我们知道,我们的web世界就是用这些技术搭建的。
但也不是很满意。
因为,什么好的?两个要求,一个目的。
一个就是简单,一个就是效率高,因为只有这样,用户才能满意。
就是这么简单。
然而,这几样技术,完全是在拖后腿。传输效率极低。
总想对程序员们说:好不是你编程方便就是好,得用户说好,才是真的好。
java也是一个典型的程序员说好,但用户并不认可的技术。
java,是不是一个垃圾技术?不好说,但也不算是什么好技术。90年还始炒,要用在嵌入式上,结果没成;95年重新炒,因为出了网景公司,不论网景还是微软都尝试过,结果都失败了;
然后,java被用于非windows平台的界面设计,但问题是,java在设计之初,设计者根本看不上UI技术(或是他们不会),IBM的强势参与,修改了JAVA “最小化"的规则,有了eclipse,java终于火了;
但不久,人们发们,在大众领域,无法应用这种十分钟才能启动的技术——过于先进了,大众无法接受~
所以,java就一直在企业用户里生存着。
一直到了android出现。
google 抄袭了早就在VB等语言中使用的字节码技术,去除了java唐僧式的所谓的一切为了安全的、还没启动先自宫自次的习惯。
终于,使java 真正快了很多。不输当年VB的效率。
这才使得JAVA才真正对大众见面。不过,java的老东家此时,却只能在oracle大骂google用的不是“真的”java.
这个东东,完全照抄JAVA,特别是照抄了绝大部分的java的缺点,除了能用visual studio上编程,实在无什么可称道之处。
微软把当年VB的思想全都忘了,或是因为外包给阿三的原因吧。
好处是有一些大公司开发了一些界面库。
执行效率,winform还算是不错。
但asp.net 就没有什么了。
当然,他们不算是很不好。
但也有问题。
TCP是面向连接的。
这个事,我们很快就得重新思考一下——马斯克,正张罗着送人去火星呢。
好吧,我们在火星建了个服务器,地球人想去访问看看火星殖民者的生活。
问题来了。无线信号要20多分种才能到。
当然,也没啥,多等会呗。TCP的mac等的keeplive好象是2小时吧,也不会掉线——但会有许多问题O,比如ACK包。比如流量控制。
当然,也可以在地球建个镜像,这是最可行的。
但一些需要实时交互的事情怎么办?
再说,HTTP。
HTTP是基于TCP的,HTTP也有个问题:
HTTP是状态无关的。
也就是说,你F5一次,就需要重传一次。要是实时访问火星上的服务器,这好象不太好吧?
所以说,老实说,从来也没习惯过HTTP。太慢,太没效率。
HTTP与关系数据是本质冲突的。
oracle和SQL Server等许多数据库,在服务端做对session了许多优化和缓存。结果,我们编程时,却不断地open connection ,close connection.
说实话,看到这样的代码,我就想,盖茨你哭去吧!99%的Sql server的代码,白写了。这部分,才是数据库里面最值钱的部分。
但因为HTTP,就这样,白费了。
好在有了XMLHttp,也就是ajax.
但ajax又是xml吧?真是没有碰不到这些垃圾的时候。
不得不说,PHP是一种挑战人类极限的垃圾发明。
怎么编语言不好?要搞成这个样子?
一堆$$$$$$$$$$$$$$$$$
还没用先崩溃了。
但是,有位哲人说了,我们的世界是不完美的。最后我还是习惯了——吐啊吐啊,终于习惯了。
装了个vs的php插件后,总算是好了许多。
要说这里,最可恶 的,可以说是PHP。
为什么?
最家伙是最后出来的,寄托了我们多少希望?
结果希望越大,失望越大。
后来的,但是。。。。。。。。。。。
再说数不清的PHP框架。老实说,不习惯。包括WP,drupal,等等吧。
出来一个简单的,然后变复杂了,一直是这个路子。无有止境啊。
PHP的一个问题在于没有创新。
语法是继承自Perl的。但用过Perl之后发现,php比perl差远了。
PHP没有在异步上有什么建树。
等等吧。
虽然,在互联网上,就php,jsp,asp三个来选,我会选php,但真的是不满意。
从03年起,开网管软件多年,先是VPN的业务级网管,后来是无线通信网的网管。
大多是基于UDP的SNMP+MIB的网管。
SNMP 的好处是异步的。
另外,MIB数据是OID+Value这种方式存在的,不象我们日常用的关系数据库。
这种方式是我比较习惯的。因为在分布式的环境下,这种思维也比较符合现实。
但是一直没有找到可以在“民用”方面可用的类传异步架构。
直到,后来出现了nodejs+mongodb+json
眼前一亮。就好象你一直在等的姑娘,终于出现了,而且,不出所料,来自于google.
node.js相当于这个体系的服务端的Agent,代理端。
我们当年的SNMP是基于一个叫envoi还是什么的公司的SNMP协议栈,应该是很贵,也是C语言的。运行在vxWorks上,后来移植到linux。
上面有个PKT数组,目的是存下发的请求,当Manager下发一个请求,就存在那里,处理完,把响应和请求号发回。
这样就实现了异步。
json相当于oid加值
mongodb相当于mib的数据
从现在起,开始转向这个体系。
因为这才是未来的技术。当然,相信,未来,不止有这一种异步体系。
当然,jsp,asp,php,也应该能json实现对node.js的调用,但以后,还是尽可能,少在他们身上花工夫为好。
分析完这些不正确的技术,联想一下我们的现实世界。
比如 iPhone的成功,上面的许多应用,许多都是用的本地化技术。少去服务端取数据。
这正是HTTP缺少的。
对的事情,会被彰显。
HTTP只是一个“将就”的技术。
如果想做一个用户满意的产品,需要有投入。