自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

XML的傳奇人生

開發(fā) 開發(fā)工具
們是個大家族, 比如XML DTD 和 XML Schema , 這哥倆專門負責(zé)對XML進行校驗, 一個程序拿到一個XML數(shù)據(jù)以后,只需要用DTD/Schema 校驗一下,就知道這個數(shù)據(jù)是不是缺胳膊少腿, 如果真有問題, 就不用費心繼續(xù)讀取了。

1.誕生和發(fā)展

我雖然20歲不到, 可已經(jīng)是滿臉滄桑了, 這不能怪我, 你們?nèi)祟惖腎T技術(shù)發(fā)展的實在太快。很多技術(shù)別說20歲了, 10歲,甚至5歲都活不到就銷聲匿跡了。

20年來, 我有著波瀾壯闊的人生, 曾經(jīng)在多個領(lǐng)域占據(jù)統(tǒng)治地位, 但如今這些領(lǐng)域已經(jīng)被侵蝕得不成樣子了。

我的誕生可以算是一個分水嶺,在此之前,程序之間想交換數(shù)據(jù), 都用自定義的格式, 千奇百怪,無所不有,比如:

[978-7-229-03093-3|三體|劉慈欣|中國最牛的科幻書|38.00]

{978-7-229-03093-3 三體 劉慈欣 中國最牛的科幻書 38.00}

{(978-7-229-03093-3) (三體) (劉慈欣) (中國最牛的科幻書) (38.00)}

這些字都認識, 意思也能猜個八九不離十, 但是非要問精確的含義是什么,只有互相交談的兩個程序知道了, 如果第三個程序也想摻乎進來, 必須得問問碼農(nóng)每個字段到底是什么意思才可以。

現(xiàn)在好了, 你只要看看用我XML來描述,就立刻明白了:

  1. <book> 
  2. <isbn>978-7-229-03093-3</isbn> 
  3. <name>三體</name
  4. <author>劉慈欣</author> 
  5. <desc>中國最牛的科幻書</desc
  6. <price>38.00</price> 
  7. </book> 

我成為了一個通用的世界語,無論你是Java, C#, Python...... 只要你能讀取XML的格式, 就可以互相交談, 很明顯這種簡單的格式解析起來沒啥難度, 一大批支持各種語言的XML解析器如雨后春筍般冒了出來。

我們是個大家族, 比如XML DTD 和 XML Schema , 這哥倆專門負責(zé)對XML進行校驗, 一個程序拿到一個XML數(shù)據(jù)以后,只需要用DTD/Schema 校驗一下,就知道這個數(shù)據(jù)是不是缺胳膊少腿, 如果真有問題, 就不用費心繼續(xù)讀取了。

還有號稱小李飛刀的XPath, 能夠迅速而精準地從一大段復(fù)雜的XML中刺中特定的節(jié)點,根本不用你費心費力地一層一層的尋找。

百變大師XSL/XSLT , 能輕松地把XML轉(zhuǎn)換為另外一種表示和格式,例如HTML, 功能之強大令人瞠目結(jié)舌。

我們一大家子互相扶持,迅速地征服了數(shù)據(jù)交換和傳輸這一領(lǐng)地。

不僅如此,我們家族還成功地和Java 結(jié)盟, 更上一層樓。 一個是跨平臺的語言, 另外一個也是跨平臺的語言,你說是不是絕配?

2 攻城掠地

除了數(shù)據(jù)傳輸以外, 我最早在配置文件領(lǐng)域取得了成功, 說道配置文件, 之前都是簡單的key=value 這樣的屬性文件, 描述簡單的結(jié)構(gòu)還行, 對于復(fù)雜的結(jié)構(gòu)就力不從心了, 我XML就不同了, 全稱是‘Extensible Markup Language’ , 可擴展性極強,標簽隨意定制,即使是在復(fù)雜的邏輯下,我XML也是得心應(yīng)手,我給你看個web.xml的例子吧:

人民群眾的眼睛是雪亮的, 看到我的可擴展性這么強悍,想定義啥tag就定義啥tag , 紛紛從屬性文件倒戈, 什么Struts , Spring ,Hibernate , MyBatis 寫配置文件時不約而同地選擇了我。

這是個巨大的勝利啊, 除了這個之外,我還成功地進入了新的領(lǐng)域, 還是先看個例子:

這個代碼片段中<copy>是表示把文件從一個地方復(fù)制到另外一個地方。 <zip>是把文件打成zip包 , 是不是一目了然?

這其實是Ant的一段代碼, 你一看就明白是怎么回事了, 所以我非常適合描述任務(wù)和流程, 因為其中有復(fù)雜的控制,其實你想想,Ant是用我的標簽定義了一套自動化處理的‘語言’出來, 程序員可以用這個‘語言’ 寫出非常復(fù)雜的程序出來, 厲害吧?

還有一個很好的例子, 10多年前各大廠商鼓噪SOA, Web 服務(wù)開始流行, 它也要做成跨平臺的,需要一種方式來描述一個Web服務(wù)有什么操作, 調(diào)用這個操作需要什么輸入?yún)?shù), 有哪些輸出參數(shù)等等 。 我一想這簡直就是為我量身定制的啊。我輕輕松松就可以搞定:”

雖然有些冗長, 但是也沒辦法, 我那tag 就是成對出現(xiàn)的啊。

我沒有想到的是,程序員也把我應(yīng)用到了界面描述的領(lǐng)域, 其實界面的生成是個大老難的問題, 人類曾經(jīng)走了兩個極端, 一個是把界面布局,控件等信息都塞到一個文件當(dāng)中, 這個文件通常不是人直接可讀的,而是由編輯器來裝載的, 例如VB。 還有一個極端就是完全用代碼來生成界面, Java Swing 就是杰出的代表。

既然我的描述能力這么強大, 完全可以拿來描述界面啊, 就像描述任務(wù)和流程一樣。 然后程序或者框架讀取XML,把界面生成不就可以了。

要想有直觀認識的話可以看看Android, 還有早期Firefox 的XUL , 微信的XAML都是用我來描述界面的。

總而言之,我在數(shù)據(jù)交換, 配置文件, 任務(wù)和流程的描述, Web服務(wù)的描述, 還有界面描述領(lǐng)域都取得了成功, 不是自夸, 這個時候確實是我人生的***

3 蠶食

好景不長, 俗話說物極必反,盛極必衰。 在數(shù)據(jù)傳輸和數(shù)據(jù)交換這個領(lǐng)域, 很快被Javascript 和 JSON 撕開了一個口子, 他們充分地利用了人們對冗余標簽的不滿, 搞出了這樣簡潔的格式:

簡潔,數(shù)據(jù)量小, 方便傳輸, 更重要的是Javascript 解析起來非常方便。

我說你們這是亂搞, 沒有schema , 你這數(shù)據(jù)怎么驗證啊?出錯了怎么辦?

他們告訴我, 老先生,您想多了,我們用JSON做同一個應(yīng)用內(nèi)的數(shù)據(jù)傳輸, 從瀏覽器到服務(wù)器, 或者從App到服務(wù)器, 同一個公司的人, 只要接口定義好,大部分情況下都沒問題,不用費心做驗證, 即使數(shù)據(jù)被損壞,拋出錯誤就行了啊。

我表示無語, 只能眼睜睜地看著JSON攻城掠地, 把數(shù)據(jù)傳輸這一塊高地慢慢地蠶食了。

再說說配置文件吧, 原來喜歡我的碼農(nóng)開始抱怨, 他們說XML描述又臭又長,說簡短的配置文件還可以, 稍微長一點看起來頭都暈了。

怎么辦? Spring, Hibernate 這幫家伙見風(fēng)使舵, 紛紛轉(zhuǎn)向Java注解。XML文件配置能干的活, Java注解也可以做, 甚至干的更好, 于是我又流失了一大批擁躉。

SOA也好景不長,逐漸沒落,有個叫Roy Thomas Fielding的家伙 發(fā)表了一篇論文, 提了一個叫做RESTful風(fēng)格的Web架構(gòu)出來, 搞得人心浮動, RESTful風(fēng)格的服務(wù)開始大行其道, 使用傳統(tǒng)Web 服務(wù)的人越來越少, 既然沒人用Web 服務(wù), 也就沒人使用XML來寫WSDL, 于是這塊陣地也慢慢的丟失了。

屈指一算, 我丟失了三塊重要的陣地, 很快從***滑落了。

不是我不明白,是技術(shù)變化實在快,現(xiàn)在唯一能安慰我的就是在復(fù)雜的結(jié)構(gòu)、任務(wù)、流程的描述方面, 我還有著不可替代的作用。

如果有一天出現(xiàn)一門全新的技術(shù)把我替代了, 我就老老實實讓位, 去養(yǎng)老院找我爺爺GML(Generalized Markup Language ) 養(yǎng)老去吧。

【本文為51CTO專欄作者“劉欣”的原創(chuàng)稿件,轉(zhuǎn)載請通過作者微信公眾號coderising獲取授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2009-01-06 09:00:31

喬布斯傳奇人生iPhone

2016-10-11 17:21:30

IT

2011-12-28 09:31:25

程序員

2022-08-09 11:15:28

CIOIT

2016-03-15 12:12:00

2011-07-28 09:49:43

Linux社區(qū)Debian

2011-07-22 10:58:44

Linux社區(qū)Ubuntu

2016-03-24 18:47:27

網(wǎng)絡(luò)安全技術(shù)周刊

2010-03-16 11:03:00

計算機鼻祖物理學(xué)著作

2011-10-24 09:42:00

C語言

2013-12-26 09:57:32

2023-05-15 15:10:25

開發(fā)技術(shù)

2015-04-23 08:51:53

2011-12-13 15:03:58

Amazon

2022-06-10 10:47:31

CIO董事會

2021-03-15 15:15:09

數(shù)據(jù)管理

2010-04-12 09:40:22

江民之子

2009-07-21 14:47:30

it失業(yè)

2015-08-12 13:31:24

2014-12-12 09:21:46

dotCloudDockerPaaS
點贊
收藏

51CTO技術(shù)棧公眾號