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

實現(xiàn)XML和Web服務(wù)時要避免的三種常見錯誤

開發(fā) 前端
在實現(xiàn)XML和Web服務(wù)時要避免的三種常見錯誤,包括內(nèi)存溢出、性能問題等Web服務(wù)的常見問題。

IBM的Kyle Brown在其評論文章開始描述了一種常見的情景:“許多人因以不恰當?shù)姆绞绞褂肳eb服務(wù)和XML而給他們自己挖了一個坑”。在他的評論中,Kyle介紹了三個常見的痛點,解釋了它們?yōu)楹螘l(fā)生并提供了一些替代方法。

我的消息吃了我的服務(wù)器!Kyle指出,通常,Web服務(wù)開發(fā)者開始經(jīng)歷“內(nèi)存溢出”的錯誤或者奇怪的“性能問題”時,總是會發(fā)現(xiàn)服務(wù)器擁有極高的處理負載,CPU使用率接近100%,以及較低的吞吐量和高網(wǎng)絡(luò)延遲。導(dǎo)致這些癥狀的典型原因是非常大的(有時會達到50 MB或者更大)消息。而且,這些大消息往往包含了非常大的、作為XML消息主體的、采用base-64編碼的二進制編碼信息。導(dǎo)致其發(fā)生的原因通常是:

……開發(fā)者不理解技術(shù)的局限性:XML處理對解決許多問題都有用,
但是你必須認識到消息是要被解析的——并且在大多數(shù)……產(chǎn)品中,
這就意味著許多或者所有的消息都會駐留在內(nèi)存中。

Kyle建議采用如下方法來改善這種情況:

不要發(fā)送冗余信息。在許多情況下,發(fā)送二進制數(shù)據(jù)時,你可能會
發(fā)現(xiàn)消息高度重復(fù)。如果是這樣,你可能就要考慮在HTTP層面使用
壓縮技術(shù)來改善你的網(wǎng)絡(luò)延遲。雖然這不會幫助你處理負載,但可
能有助于減輕其中一個問題。
在XML消息體中,根本不要嵌入二進制信息。這是較好的解決方法,
還有幾種不同的途徑可以實現(xiàn)這一效果。比如,你可以使用帶有附件
的SOAP或者消息傳輸優(yōu)化機制(MTOM)繞過解析開銷,盡管這無助于
網(wǎng)絡(luò)延遲問題。
……還有一個更好的辦法,使用SOAP根本不發(fā)送大的二進制blob。
替代方法,通過受控的文件傳輸系統(tǒng),使用一個“帶外數(shù)據(jù)
”傳輸……或者“聲明標簽(claim Check,參見《EIP模式》或這里)”
模式,避免在SOAP和HTTP上發(fā)送大的二進制文件。

不好意思,你的數(shù)據(jù)正在顯示。根據(jù)Kyle所說,另一個典型的Web服務(wù)的“性能問題” 是,使用Web服務(wù)的層面非常、非常低——通常Web服務(wù)跟一個SQL語句相關(guān),這是因為:

誤解了SOA架構(gòu)原則。一個優(yōu)秀SOA架構(gòu)的關(guān)鍵原則是你的服務(wù)
應(yīng)該具有高復(fù)用性。

根據(jù)Kyle所說,這些情況通常發(fā)生在:

……如果設(shè)計是根據(jù)現(xiàn)有代碼“自上而下”衍生出服務(wù),這類服務(wù)
就會出現(xiàn);通常,開發(fā)者會看著他們現(xiàn)有的架構(gòu)圖并且決定將
架構(gòu)中的每一層(包括表現(xiàn)層)轉(zhuǎn)變成服務(wù)集。
相反,在SOA架構(gòu)的正確位置使用粗粒度的Web服務(wù)會更好。再次
強調(diào),檢查一個架構(gòu)的標準分層模型,通常在架構(gòu)中會有一個
明確定義的地方已經(jīng)封裝了系統(tǒng)業(yè)務(wù)邏輯。可以使用“遠程門面
模式(Remote Facade Pattern)”來包裝這些服務(wù),以便用合適
的方式來暴露基于模型的服務(wù)。

模式(Schema)?我們不需要任何發(fā)臭的模式! Kyle指出,通常開發(fā)者試圖重用現(xiàn)有代碼來生成和解析作為Web服務(wù)實現(xiàn)基礎(chǔ)的XML。這些實現(xiàn)通常使用XML解析器來編組/解組消息,同時使用Java HTTP類來發(fā)送和接收XML文檔。使用Web服務(wù)時,通用的方法是,創(chuàng)建使用模式元素的WSDL文檔,使XML不受阻地通過,然后在現(xiàn)有代碼中對它們進行解析。

這個問題的癥狀是組織沒有看到SOA承諾的好處,而且維護他們的
解決方案似乎比以前使用Web服務(wù)的時候更難(而不是更容易)

簡單的解決方案是,每當寫Web服務(wù)時,不管使用WS-*標準還是使用REST方法,都要確保你創(chuàng)建了代表你文檔結(jié)構(gòu)的完整準確的XML模式。

如果你正在構(gòu)建WS-* Web服務(wù),那么這個XML應(yīng)該被包含
在描述你的Web服務(wù)的WSDL之中。即使你在使用REST方法,
擁有易于訪問的XML模式將鼓勵你的服務(wù)被重用。

避免Kyle描述的陷阱似乎是個常識。不幸的是,我們的業(yè)界證明了,除非很好的理解和治理SOA實現(xiàn),否則我們會繼續(xù)一次又一次地重復(fù)犯同樣錯誤。

【編輯推薦】

  1. DB2 Version 9.5 pureXML的增強和新特性
  2. 詳解.NET中的XmlReader與XmlWriter
  3. 應(yīng)用CSS屬性 實現(xiàn)WEB頁面強制分頁打印
責任編輯:book05 來源: infoQ
相關(guān)推薦

2023-01-09 15:16:17

2018-07-11 05:24:05

機器學習人工智能數(shù)據(jù)

2022-03-08 09:31:48

云配置云安全

2021-08-11 13:54:19

微服務(wù)系統(tǒng)架構(gòu)開發(fā)者

2023-05-11 09:06:50

錯誤IT培訓(xùn)

2017-12-29 08:26:28

存儲引擎MySQL

2021-06-28 10:12:34

云計算云平臺云計算架構(gòu)

2021-03-09 09:52:55

技術(shù)React Hooks'數(shù)據(jù)

2021-08-10 10:14:14

存儲接口存儲設(shè)備存儲

2013-08-15 09:47:07

云遷移云技術(shù)

2010-08-03 09:20:33

Flex讀取XML配置

2010-09-25 15:07:08

SQL插入語句

2010-08-24 09:43:33

2017-08-17 09:07:45

Python編程代碼

2017-08-29 11:05:00

Python編程錯誤

2021-04-29 15:29:52

機器學習人工智能AI

2009-08-04 09:09:56

Java常見異常

2020-10-29 09:00:00

Vue.jsjQuery前端

2009-11-10 13:19:09

動態(tài)路由協(xié)議

2017-07-03 09:15:07

點贊
收藏

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