Web服務互操作開發的十大要點

來源:互聯網
上載者:User
web|web服務|web服務  

Web服務互操作開發的十大要點


在過去一段時間裡,很多供應商紛紛以驚人的速度發布其Web服務的實現。這包括產品的主要版本、輔助版本和許多開發服務包。隨著新版本越來越符合標準,不同供應商之間的互通性越來越高。

儘管如此,仍然需要在共同使用這些Web服務時的建議和策略。有些實踐允許您確保以互操作的方式既使用又公開Web服務。基於已有的經驗,我整理了關於Web服務互通性的“十大”要點列表。有些要點基於在Microsoft上啟動並執行測試結果的發現,另外一些是在開發項目時覺得有用。這裡的提示可以應用於IBM、BEA及多個開放源碼堆棧。我希望它們對您有用。下面從下往上依次介紹這些要點:



本頁內容
10. 當心空數組
9. 產生用戶端代理時使用包和類型名稱選項
8. 測試產生的Java Bean是否為空白
7. Java可以識別空的日期和時間值,但.NET不能
6. 比較日期/時間時始終使用compareTo()
5. 使用“跟蹤工具”進行研究
4. 為“更改主機和連接埠”添加選項
3. 產生Web服務時確保使用Document/Literal
2. 使用單元測試來測試互通性
1.首先使用XSD

10. 當心空數組
通過Web服務發送空數組可能產生問題。有些工具包將空數組識別為單個空值,而另外一些則將其表示為一組空數組元素。我的一般原則是,通過Web服務發送對象數組時,始終確保讓數組包含有效資料。


9. 產生用戶端代理時使用包和類型名稱選項
很多基於Java的工具有產生用戶端代理時指定獨特的包和類型名稱的選項(例如,BEA WebLogic使用“clientgen”參數,IBM Rational Application Developer使用嚮導)。

為共用同一資料類型的Web服務建立代理時,對包和類型名稱的控制非常重要,例如在調用兩個具有相同Order類型的Web服務時。

8. 測試產生的Java Bean是否為空白
使用工具或IDE從XSD檔案產生Java Bean時,始終確保您知道如何執行測試操作以瞭解對象是否為空白。您可能認為下面的代碼可以完成這樣的測試:

if (myObject == null)

但是在某些情況下,您是在測試對象是否存在,而不是對象的值是否存在。我的建議是,始終在產生的bean上檢查isNil()方法(或類似方法)。如果它存在,則可確保得到真值。


7. Java可以識別空的日期和時間值,但.NET不能
在Java中,java.util.Date和java.util.Calendar被分類為參考型別。在.NET Framework 1.1中,System.DateTime被視為實值型別。

這將會如何?參考型別可以為空白,而實值型別不能。如果要跨越Web服務發送空日期值,則始終以複雜類型發送值,並將複雜類型的值設定為空白。這將有助於避免空的日期值被曲解(從而引發異常)。

6. 比較日期/時間時始終使用compareTo()
如果通過Web服務在.NET和Java之間發送日期和時間,則始終使用Java中適當的compareTo()方法來比較日期。例如使用:

if (myDate.compareTo(yourDate) == 0)

而不要使用:

if (myDate == yourDate)

這將有助於確保平台間日期比較的準確性,尤其是試圖比較毫秒值時。

5. 使用“跟蹤工具”進行研究
“跟蹤工具”是研究SOAP請求和Web服務間響應的理想選擇。它可以協助驗證資料類型和訊息構造,還會報告您在瀏覽器中可能錯過的SOAP錯誤。

可用的跟蹤工具有很多類型 —— 有些在用戶端上運行,有些在伺服器上運行,有些甚至運行於用戶端和伺服器之間(如代理)。這些類型的跟蹤工具設定起來比較困難,但是總的來說還是很有用的,因為您可以看到在系統之間傳遞的訊息。有些代理跟蹤工具甚至還可以讓您編輯和回複訊息——這一點對於調試非常有用。

4. 為“更改主機和連接埠”添加選項
設計Web服務用戶端時,考慮添加一個協助器方法用於更改Web服務位置的主機和連接埠值。這會為將來Web服務的位置變更或者把輸出重新導向到跟蹤工具帶來方便。我發現這在Web服務間進行故障切換時特別有用。

3. 產生Web服務時確保使用Document/Literal
有些工具包提供一個選項,讓您從以下內容中為Web服務做出選擇:

• RPC/Encoding

• RPC/Literal

• Document/Literal


這些選項為Web服務契約控制樣式和編碼機制。要協助確保與WS-I Basic Profile一致,始終確保將Document/Literal作為您所有Web服務的預設編碼機制。RPC/Literal僅在特殊情況下使用。永遠不要使用RPC/Encoding。

2. 使用單元測試來測試互通性
單元測試(使用.NET的NUnit或Java的JUnit)是通過Web服務檢查多種資料類型的互通性的最好方式。

如果資料類型變更(或如果更改Web服務工具包的版本!),則需要再次運行測試。這可以讓您確信您設計的Web服務具有完整的互通性。


1.首先使用XSD
設計互通性時,始終一開始先定義資料。決定要發送的資料後,首先在XSD中建立資料類型,然後使用工具從XSD檔案產生類。依此順序執行操作,有助於確保資料類型的線上互通性。為此,需要熟悉XSD —— 瞭解如何在XSD中建模資料和可用於建模資料的工具。XSD檔案可以在Visual Studio .NET中直接建立和編輯。有了XSD後,在每個平台上使用適當的工具產生資料類型。在.NET中,可以使用xsd.exe(架構的一部分)或XsdObjectGen(可從MSDN免費下載)。對於Java,這取決於您所使用的工具包。對於IBM,使用Java Bean for XML Schema Wizard;對於BEA,將XSD檔案拖到WebLogic Workshop中的Schemas檔案夾中。如果是其他工具包,則搜尋Schema2Java工具。完成後,在Web服務中公開產生的資料類型 ——此步驟的前提是,您需要確保這些類型能夠被正確地序列化到XSD和XML中。到您可以保證資料的線上顯示方式時,互通性對您來說就已經近在咫尺了!



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。