`

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/

 
分享到:
评论

相关推荐

    大师品软件_Why Software Sucks

    《大师品软件_Why Software Sucks》是一本深入探讨软件设计缺陷和用户体验问题的书籍,由David S. Platt撰写。这本书旨在揭示为什么某些软件在使用过程中让人感到困扰,并提出改善软件设计的策略。作者Platt是一位...

    Why.Software.Sucks

    Any book is the product of a team effort. In this one, I've had an out- standing supporting cast. Everyone at Addison-Wesley understood and got behind the concept of a book for the users of ...

    itsucks-0.4.1开源爬虫

    【itsucks-0.4.1开源爬虫】是一个针对初学者友好的网络爬虫工具,它的出现使得没有编程背景的用户也能轻松进行数据抓取。这个最新版本的itsucks,不仅提供了完整的爬虫功能,还引入了一个简洁的图形化用户界面(GUI...

    itsucks-0.4.1.zip

    【itsucks-0.4.1.zip】是一个包含开源Java Web Spider项目的压缩包,这个项目被称为itSucks。itSucks的设计目标是帮助用户轻松构建网络爬虫,它使用了Web机器人技术,允许用户通过定义下载规则来抓取网页内容。项目...

    itsucks开源代码

    爬虫源码,开源 java 很好 强大 可扩展

    信息安全_数据安全_Why_the_role_of_CISO_sucks_and_w.pdf

    信息安全_数据安全_Why_the_role_of_CISO_sucks_and_w 信息安全研究 金融安全 安全人才 安全对抗 法律法规

    why-your-test-suite-sucks

    标题“why-your-test-suite-sucks”暗示了我们讨论的主题是关于测试套件存在的问题以及如何改进它们。测试套件是软件开发过程中的重要组成部分,它确保代码的质量、稳定性和可靠性。然而,当测试套件出现问题时,...

    itsucks:http

    ItSucks 网络爬虫 描述 这个项目是一个具有下载(和恢复)文件能力的java网络蜘蛛(网络爬虫)。 它还可以使用正则表达式和下载模板进行高度定制。 所有后端功能也可在单独的库中使用。 官网 执照 本地开发使用 将 ...

    Atc Sucks-crx插件

    【Atc Sucks-crx插件】是一款针对英文用户的浏览器扩展程序,主要目的是表达用户对“ATC”(可能是某个网站、服务或功能的缩写)的不满情绪。这款插件由开发者创建,用于向用户展示ATC存在的问题,或者提供某种方式...

    Smooth Scroll Sucks-crx插件

    因此,【Smooth Scroll Sucks-crx插件】致力于让浏览器的滚动条重获自由,释放用户在浏览时可能遇到的困扰。它通过禁用页面上的平滑滚动特效,使鼠标滚轮和触摸板的操作更加直接,使浏览体验更接近传统习惯。 现代...

    Vegandale Sucks-crx插件

    【Vegandale Sucks-crx插件】是一款专为英文用户设计的浏览器扩展程序,主要功能是替换网络上关于“Vegandale”的相关信息,将其转化为“Gentrified Parkdale”。这款插件针对的是那些可能对“Vegandale”这一名称...

    IE Sucks-crx插件

    IE SUCKS这么糟糕,实际上是有趣的观看失败! IE样式信息条在页面中的障碍码时发光。 无广告! Internet Explorer是一个浏览器的F ****笑话,并字面上持有进步! 在逐步淘汰之前庆祝最终几天,用IE吸收插件。 每当...

    rabbit sucks!-crx插件

    【标题】:“rabbit sucks!-crx插件”是一个针对特定网站或应用的浏览器扩展,其主要功能是优化用户界面,提供更加个性化的浏览体验。这个插件的名称可能具有一定的幽默感,暗示它可以帮助用户摆脱某些他们不喜欢的...

    DuPont Sucks FTP-开源

    DuPont Sucks FTP(DPS-FTP)是一个开源的FTP客户端工具,专为用户提供便捷的文件传输服务。这个项目的名称“DuPont Sucks FTP”可能源于一种幽默或反讽的表达,暗示它并非由杜邦公司开发,而是由社区驱动的独立项目...

    kevingreen.sucks

    【标题】"kevingreen.sucks" 是一个网站项目,基于 "Simple Next App" 构建,主要用于表达对个人或事物的不满或者批评。在互联网上,".sucks" 域名通常被用来创建一个平台,让人们可以公开讨论他们认为有问题的事物...

    IE吸盘「IE Sucks」-crx插件

    使用IE Sucks插件庆祝淘汰前的最后几天。 每当遇到旨在帮助Internet Explorer像老人一样上楼的代码时,我们都会像过去一样发出经典的IE信息栏。 您知道,这意味着您只有更多无用的废话可以破坏您的浏览器,除非这次...

    sucks:用python制作的小CRUD

    标题中的“sucks:用python制作的小CRUD”表明这是一个使用Python编程语言开发的简单创建、读取、更新和删除(Create, Read, Update, Delete,简称CRUD)应用程序。CRUD是数据库操作的基础,是任何数据管理系统的基石...

    your-band-sucks-v2:通过不良专辑封面分享音乐

    【标题解析】:“your-band-sucks-v2”很可能是一个音乐相关的项目或应用,可能是由开发者创建的一个幽默或者讽刺性的音乐分享平台。"v2"表示这是项目的第二个版本,通常意味着在原有基础上进行了改进和优化。 ...

    Moments Sucks-crx插件

    如果您确实讨厌Twitter内的Moments标签,并且在尝试查看通知时始终单击此处,则只需安装此… 如果您确实讨厌Twitter内的Moments选项卡,并且在尝试查看通知时始终单击此处,则只需安装此轻量级扩展程序即可将其发送...

Global site tag (gtag.js) - Google Analytics