成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

實現XML和Web服務時要避免的三種常見錯誤

開發 前端
在實現XML和Web服務時要避免的三種常見錯誤,包括內存溢出、性能問題等Web服務的常見問題。

IBM的Kyle Brown在其評論文章開始描述了一種常見的情景:“許多人因以不恰當的方式使用Web服務和XML而給他們自己挖了一個坑”。在他的評論中,Kyle介紹了三個常見的痛點,解釋了它們為何會發生并提供了一些替代方法。

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

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

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

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

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

誤解了SOA架構原則。一個優秀SOA架構的關鍵原則是你的服務
應該具有高復用性。

根據Kyle所說,這些情況通常發生在:

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

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

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

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

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

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

【編輯推薦】

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

2023-01-09 15:16:17

2018-07-11 05:24:05

機器學習人工智能數據

2022-03-08 09:31:48

云配置云安全

2021-08-11 13:54:19

微服務系統架構開發者

2023-05-11 09:06:50

錯誤IT培訓

2017-12-29 08:26:28

存儲引擎MySQL

2021-08-10 10:14:14

存儲接口存儲設備存儲

2021-06-28 10:12:34

云計算云平臺云計算架構

2021-03-09 09:52:55

技術React Hooks'數據

2013-08-15 09:47:07

云遷移云技術

2010-08-24 09:43:33

2010-09-25 15:07:08

SQL插入語句

2010-08-03 09:20:33

Flex讀取XML配置

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常見異常

2009-11-10 13:19:09

動態路由協議

2020-10-29 09:00:00

Vue.jsjQuery前端

2017-07-03 09:15:07

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美三级免费观看 | 色性av| 精品成人佐山爱一区二区 | 日韩精品一区中文字幕 | 福利片在线看 | 国产精品高清一区二区三区 | 高清欧美性猛交xxxx黑人猛交 | 国产激情视频在线观看 | 欧美精品在线看 | 国产亚洲精品久久久久久豆腐 | 国产丝袜一区二区三区免费视频 | 国产伦一区二区三区四区 | 97伊人| 成人午夜激情 | 久久噜噜噜精品国产亚洲综合 | 免费观看的av毛片的网站 | 精品99在线| 亚洲电影一区 | 二区av | 视频三区 | 日韩精品二区 | 日韩在线国产 | 午夜视频网| 国产精品欧美日韩 | 中文字幕免费视频 | 视频一区二区在线 | 国产精品国产三级国产aⅴ中文 | 在线观看国产 | 国产欧美一区二区三区久久手机版 | av手机在线免费观看 | 久久国产精品-国产精品 | 天天综合天天 | 久久亚洲一区二区三区四区 | 午夜激情影院 | 一区二区在线 | 久久亚洲视频 | 午夜视频在线观看一区二区 | 欧美综合久久 | 在线日韩视频 | 精品二区| 一区二区三区欧美在线 |