我需要帮助iOS Web服务客户端的设计模式

时间:2012-10-05 10:56:44

标签: objective-c ios web-services architecture

我想在iOS中实现一个Web服务客户端,它使用SOAP和XML来处理请求/响应。 我的视图启动了最初的businnes逻辑(用户按下按钮或其他东西并启动一些名为method_A的businnes方法)。

所以我有一个带有method_A的类,这个方法检查用户是否登录等,然后通过SOAPConnector-class异步启动请求。因此UI不会被阻止(异步)。 SOAPConnector类接受XML并处理请求。因此我使用NSURLRequest和NSURLConnection与sendSynchronousRequest。

响应被发送回响应类,该响应类接收响应。然后,该类想要解析响应XML。因此,我使用一个名为XMLManager的额外类,它使用NSXMLParser来解析xml。但是在这里我们需要一个获得解析的xml的委托。在解析之后,我必须再实现一个额外的方法,将解析后的xml返回给发起请求的第一个类。

我真的很想知道这是否正确。第一个问题是不阻止UI的异步请求(第一个回调)。第二个问题是解析我被迫使用委托(第二个回调)。这导致了很多类和方法,我怀疑这是正确的方法。这些类的唯一目的是管理委托和异步问题。所以我要求任何建议并帮助解决这个问题。你知道一些好的设计模式来解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

除了描述您选择的设计模式的方式有些不一致之外:

  

然后启动请求异步

VS

  

因此我使用NSURLRequest和NSURLConnection   sendSynchronousRequest。


那就是说,你的方法似乎很合理。解决您已确定的问题:

  

因此我使用NSURLRequest和NSURLConnection   sendSynchronousRequest。

这不是使用异步API的目的吗?如果您的NSURLConnection确实是异步操作,则应该涵盖该问题。

  

第二个问题是我被迫使用的解析   代表

这种方法确实会产生更多的类,委托等,但它在测试时符合最佳实践。如果您正在执行单元测试或其他测试策略(您不是吗?)那么除非您在功能上细分此过程,否则单独进行测试会更加困难。

如果您可以访问该书Test-Drive iOS Development,那么有关使用Web服务的最佳做法的一个很好的部分,以便考虑可测试性。