2012-10-05 44 views
2

我想在iOS中實現一個使用SOAP和XML請求/響應的web服務客戶端。 我的觀點開始初始businnes邏輯(用戶按下按鈕或某事並啓動一些businnes方法稱爲method_A)。我需要幫助iOS設計模式的web服務客戶端

所以我有一個類method_A和這個方法檢查用戶是否登錄等,然後通過SOAPConnector類異步啓動請求。所以UI不會被阻塞(異步)。 SOAPConnector類採用XML並處理請求。因此我使用NSURLRequest和帶有sendSynchronousRequest的NSURLConnection。

該響應被髮送回響應類的響應。這個類然後想要解析響應XML。因此我使用一個名爲XMLManager的額外類,它使用NSXMLParser來解析xml。但是在這裏我們需要一個獲得解析XML的委託。再次解析後,我必須實現一個額外的方法來將解析後的XML返回給發起請求的第一個類。

我真的想知道這是否正確。第一個問題是異步請求不阻止UI(第一個回調)。第二個問題是我不得不使用代理的解析(第二個回調)。這導致了很多類和方法,我懷疑這是正確的方法。這些課程的唯一目的是管理委託和異步問題。所以我要求任何建議,並幫助如何解決這個問題。你知道一些好的設計模式來解決這個問題嗎?

的方式與你的描述,你所選擇的設計模式,一些不一致的地方

回答

0

除了:

,然後開始請求異步

因此,我使用NSURLRequest和NSURLConnection與 sendSynchronousRequest。


這就是說,你的做法似乎聲音。解決你已經確定的問題:

因此我使用NSURLRequest和NSURLConnection與 sendSynchronousRequest。

這不就是使用異步API的目的嗎?如果您的NSURLConnection確實異步運行,則應該涵蓋該問題。

第二個問題就是我不得不使用 委託

這種方法並導致更多的類,委託等解析,但是當涉及到測試它符合最佳實踐。如果你正在執行單元測試或其他測試策略(你是不是?),那麼單獨測試就更加困難,除非你在功能上對這個過程進行細分。

如果您有權訪問本書Test-Drive iOS Development,那麼有關使用Web服務以實現可測試性的最佳實踐很有幫助。

+0

帶method_A的第一個類以異步方式啓動請求,不阻止UI。所以在這一點上有兩個線程。用戶界面和其餘的請求。稍後,當它進入類SOAPConnector時,它將同步發送請求,但它仍在另一個線程中(而不是阻塞UI)。 – tester

相關問題