我希望进行一些iOS开发,以便为我正在运行的项目添加一个很好的功能。
主要项目目前用C#编写,主要是带有一些Windows服务的asp.net。 我想将其结合起来,以便能够开发一个基本的iPhone应用程序作为概念证明。
根据我的阅读和理解,通常最佳做法是使用JSON作为iOS的通信媒介。
我正在考虑使用WCF创建API方法,以便iOS应用程序可以连接到这些服务以获取数据。
有没有很好的教程可以做到这一点?
答案 0 :(得分:3)
答案 1 :(得分:2)
我一直这样做。 WCF数据服务(OData)是可行的方法。使用OData服务,您可以通过在HTTP标头中传递(Accept - Application / JSON)来指定您想要JSON响应,OData将向您返回JSON。
我使用了几个库来从iOS获取OData(它们是REST服务)。微软的iOS OData实现相当蹩脚。 RESTKit在处理它的方面做得非常好,但是如果你不得不做一些事情,那真是太痛苦了。我也使用过ASI - 它比RESTKit灵活得多,但并非没有问题。我最后写了自己的东西,它很适合我。
对于初学者,我建议在RESTKit上使用ASI。 RESTKit,虽然为你做了很多繁重的工作,但需要一点时间才能正常工作。
从OData接收JSON响应时,有两件事是不标准的。 1.所有响应都在JSONDictionary中捕获,密钥为“D”。 2.日期被序列化为JSON标准(自1970年以来的秒数),但它们被放置在如下字符串中:/ Date(1212353),因此您必须先解析字符串的Date()部分可以使用它。
RESTKit本身不处理这些问题中的任何一个,因此如果选择该路由,则必须处理它们。就个人而言,我会去ASI路线,直到你学会写自己的路线为止。
我正在考虑开源我的解决方案 - 如果我这样做,我会通过链接更新此回复。
--- ---- UPDATE
要明确一点 - 如果您的服务器端系统使用WCF数据服务(也称为OData),那么只需稍加调整,RESTKit就可以使用它。如果您的服务是传统的WCF服务(即SOAP绑定),那么您将无法从中获取JSON,因为它们绑定到SOAP协议(除非您创建自定义行为来翻译它 - 我不会这样做)。这完全取决于您的服务本质上是做什么的。如果您的服务通常是数据暴露/操作(即addCustomer),那么您应该将它们公开为OData。如果它们是真正的操作,那么您应该考虑将它们作为MVC站点的操作公开。他们中的任何一个都可以使用您现有的基础架构和平台为您提供REST服务。
答案 2 :(得分:1)
如果您使用Objective-C开发iPhone应用程序,我不确定WCF是服务器上使用的最佳Web服务技术。查看ServiceStack以创建RESTful服务。
答案 3 :(得分:0)
请参阅以下链接:
http://www.kotancode.com/2011/04/26/backing-your-ios-app-with-wcf-json-web-services/
它还包含了全面的代码示例。