您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關實現XML和Web服務時要避免的常見錯誤有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
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實現,否則我們會繼續一次又一次地重復犯同樣錯誤。
關于“實現XML和Web服務時要避免的常見錯誤有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。