我想在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的异步请求(第一个回调)。第二个问题是解析我被迫使用委托(第二个回调)。这导致了很多类和方法,我怀疑这是正确的方法。这些类的唯一目的是管理委托和异步问题。所以我要求任何建议并帮助解决这个问题。你知道一些好的设计模式来解决这个问题吗?
答案 0 :(得分:0)
除了描述您选择的设计模式的方式有些不一致之外:
然后启动请求异步
VS
因此我使用NSURLRequest和NSURLConnection sendSynchronousRequest。
那就是说,你的方法似乎很合理。解决您已确定的问题:
因此我使用NSURLRequest和NSURLConnection sendSynchronousRequest。
这不是使用异步API的目的吗?如果您的NSURLConnection
确实是异步操作,则应该涵盖该问题。
第二个问题是我被迫使用的解析 代表
这种方法确实会产生更多的类,委托等,但它在测试时符合最佳实践。如果您正在执行单元测试或其他测试策略(您不是吗?)那么除非您在功能上细分此过程,否则单独进行测试会更加困难。
如果您可以访问该书Test-Drive iOS Development,那么有关使用Web服务的最佳做法的一个很好的部分,以便考虑可测试性。