why xml sucks


2000年以来,这是一个xml大行其道的年代。xml无所不能,我们如同崇拜x战警的强悍战斗力一般崇拜这个x开头的万能者。我们用它来传输数据(soap),定义数据(xsd),存储数据(xml数据库),配置文件(web.config或者web.xml),做网页(xhtml)......换一句二战的名言:如果xml能够做饭我就娶她做老婆。
但是神话就是用来打破的。现在是到了打破这个顶在x字头顶上的光圈了。
why xml sucks?
当然没有一个全无能的废人正如没有一个全能超人一样,xml并不是在所有的时候都sucks,我的确将题目夸大了。但是我的目的还是很明确的,我们将xml神话了,然后滥用了,之后xml就在很多自己并不擅长的地方sucks了。

fisrt sucks:存储数据
xml天然的不适合存储数据。第一是冗余数据太多,xml文件本身就够浪费的了,然而一个xml树在内存中会扩大将近10倍的体积,也就是说1M的xml文件在内存中会占据大约10M的空间。所以用xml来存储数据非常的suck,除非是非常小的存储量的情况。

second sucks:传输数据(比如ajax)
在Web上远程获取数据使用xml这个庞然大物简直是太浪费了,所以很快用ajax远程调用WS的方式很快就从xml的序列化改成了json这种轻量级的方式。群众的眼睛是雪亮的。

third sucks:配置文件
如果用过hibernate,或者spring,或者任何java的传统的类库,大概会严重同意xml的配置文件极大的伤害了我们的视力。确实xml的配置包含了太多的无用内容,不容易阅读(起码我就觉得还不如ini来得容易看)。而且就用途来说,类似hibernate或者spring的配置来说,与其说配置倒不如说是一种外置的DSL,特别是spring。也可能是java或者c#的死板和强硬造就了xml,所以yaml这类看着易懂,写起来哈皮的配置方式一直很难看到,还是IronPython的同学比较有福气。
老实说其实我很赞同程序也就是配置的思想(修改web.config会导致重新编译WebSite,那么我们修改了.cs文件导致重新编译有什么区别呢?特指WebSite的情况)。

归根结底,计算机语言 写的是人,看的是机器,而xml所标榜的语义在很多时候就毫无意义,为了人看着能明白,结果是牺牲了机器处理的效率,结果最后我们发现,其实如果没有很好的工具的话纯粹书写也绝对是一种酷刑。

so that's why xml sucks

say no to xml:当然暂时还做不到,除非.net支持yaml。
.net和java这对难兄难弟中xml的流毒很深,所以如果要对xml say no,还是投奔动态语言的怀抱吧。


【引用】
yaml:
 和GNU一样,YAML是一个递归着说“不”的名字。不同的是,GNU对UNIX说不,YAML说不的对象是XML。
YAML不是XML。
介绍yaml的page:http://www.ibm.com/developerworks/cn/xml/x-cn-yamlintro/

 

posted on   亚历山大同志  阅读(2068)  评论(13编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述

导航

< 2008年8月 >
27 28 29 30 31 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 1 2 3 4 5 6

统计

点击右上角即可分享
微信分享提示