我想在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的异步请求(第一个回调)。第二个问题是解析,我被迫使用委托(第二个回调)。这导致了很多类和方法,我怀疑这是正确的方法。类的唯一目的是管理委托和异步问题。因此,我需要任何建议并帮助您解决该问题。您知道一些解决该问题的好的设计模式吗?
最佳答案
除了描述所选设计模式的方式上的一些不一致之外:
然后异步启动请求
与
因此,我将NSURLRequest和NSURLConnection与
sendSynchronousRequest。
也就是说,您的方法听起来不错。解决您发现的问题:
因此,我将NSURLRequest和NSURLConnection与
sendSynchronousRequest。
这不是使用异步API的目的吗?如果您的NSURLConnection
实际上是异步运行的,则应解决该问题。
第二个问题是在解析中我被迫使用
代表
这种方法的确导致了更多的类,委派等,但是在测试时符合最佳实践。如果您正在执行单元测试或其他测试策略(不是吗?),那么除非进行功能上的分解,否则单独进行测试会更加困难。
如果您可以阅读Test-Drive iOS Development一书,则有很大一部分介绍了使用Web服务的最佳实践,并着眼于可测试性。
关于objective-c - 我需要有关iOS Web服务客户端的设计模式的帮助,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12744769/