开发客户端 - 服务器iphone应用程序

时间:2011-09-30 21:44:02

标签: c# iphone objective-c cocoa-touch networking

如果我想开发一个带有客户端 - 服务器设计的iPhone应用程序(iPhone设备作为客户端和c#服务器),有两个问题:

  1. 是否可以使用我自己的笔记本电脑运行服务器?如果没有,我的选择是什么?
  2. 我是否必须开发自己的传输邮件协议?
  3. 因此,如果我理解正确的,从客户端向服务器发送“创建新用户”等消息的过程如下: 1.客户端将创建包含命令“CREATE NEW USER”和新用户详细信息的JSON / XML。 2.客户端将通过HTTP请求(作为HTTP请求的主体)发送此JSON / XML,其URL映射到服务器端的c#方法。 3.这将在服务器上触发相应的方法,并在数据库上创建新用户。 4.服务器将创建包含重播“CREATED”的JSON / XML,并将通过HTTP响应(作为HTTP响应的主体)将其发送到客户端。 这是对的吗?

4 个答案:

答案 0 :(得分:3)

你需要xml或json而不是http。 Web服务和REST over http是针对不同平台之间的互操作性问题而创建的,这就是您所面临的问题。

由于您正在为服务器使用C#,因此您可以查看WCF并使用REST模式或SOAP(Web服务)来公开您的操作和数据。关于数据,您可以通过网络将这些对象序列化为JSON或XML。

对于iPhone消费,我建议使用REST(因为它基本上将url请求路径映射到C#方法)。从手机的角度来看,它只是一个url请求,并且会返回xml或json数据。

在C#中,您只需创建方法并使用DataContract属性修饰它们。然后,在您的方法上,将它们映射到URL相对路径。在网上搜索WCF和REST服务。您可以在任何主机中从命令行运行它到Windows服务。

http://msdn.microsoft.com/en-us/library/bb412178.aspx

创建这些C#服务时,如果是REST,您可以在浏览器中点击请求并查看数据。您还应该考虑Fiddler检查您的流量:http://www.fiddler2.com/fiddler2/

在手机方面,您首先需要发出http请求。你可以用iOS类做到这一点,但像ASIHTTPRequest这样的包装使它更容易。一旦得到回复,就必须解析它。如果选择XML,iOS类提供了解析xml响应的简单方法。如果你选择JSON,就会有像SBJSON这样的类。

http://allseeing-i.com/ASIHTTPRequest/ - (使用前请先阅读ASIHTTPRequest blog

https://github.com/stig/json-framework

rest web services in iphone

还有一个更高级别的框架,称为RESTKit,这使得iPhone方面更容易。

https://github.com/RestKit/RestKit

希望能帮助你把它联系在一起。

修改: 添加创建新用户方案:

  

客户端使用数据(用户名,密码等)创建用户对象,并向http://yourserver/myservice/users发送HTTP PUT请求。客户端将用户对象序列化为正文中的JSON / XML。

What is the recommended/effective request payload for a REST PUT method?

PUT vs POST in REST

  

服务器接收请求。在服务器上,您有一个WCF“myservice”服务(它是一个类)。它有一个“公共用户CreateUser(用户用户)”方法。在该方法中,它通过执行任何必须执行的操作来创建用户对象(调用数据库等...)。它返回User对象,因为服务器可能添加了用户ID等信息。下面的文章有一个put请求示例。

http://damianm.com/tech/building-a-rest-client-with-wcf/

  

客户端将获得响应,并且具有诸如id等所有细节的用户对象将作为JSON / XML存在于主体中。它会将其反序列化为手机上的User对象。

     

服务器还可以暴露以下内容:   / User / {id} - > public User GetUser(string id);

答案 1 :(得分:2)

我强烈建议依赖HTTP协议。不要实现自己的网络协议!

使用GET请求从服务器获取数据,并使用POST请求将大量数据从客户端发送到服务器。

为了构建数据,使用JSON对数据进行编码。 这是一个很好的教程,解释了如何使用ASIHTTPRequest和JSONKit做到这一点:http://www.icodeblog.com/2011/09/30/dynamically-controlling-your-application-from-the-web/

是的,您可以在工作机器上运行服务器。

答案 2 :(得分:1)

您可以使用ASIHTTPRequest轻松完成此操作。这是一个免费的第三方解决方案,可以与不同类型的Web服务进行通信。

ASIHTTPRequest website

答案 3 :(得分:1)

不确定这是否能回答您的问题,但仅作为建议,因此您无需处理服务器方面的问题,请使用Parse