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

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

  1. 是否可以使用我自己的笔记本电脑运行服务器? 如果没有,我的选择是什么?
  2. 我是否必须开发自己的传输消息协议?

因此,如果我理解正确的,从客户端向服务器发送诸如“创建新用户”之类的消息的过程如下:1。客户端将创建包含命令“CREATE NEW USER”和新用户详细信息的JSON / XML 。 2.客户端将通过HTTP请求(作为HTTP请求的主体)发送此JSON / XML,其URL映射到服务器端的ac#方法。 3.这将在服务器上触发相应的方法,并在数据库上创建新用户。 4.服务器将创建包含重播“CREATED”的JSON / XML,并将通过HTTP响应(作为HTTP响应的主体)将其发送到客户端。 那是对的吗?

你想要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服务到IIS。

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博客 )

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

在iphone中rest网络服务

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

https://github.com/RestKit/RestKit

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

编辑:添加创建新用户场景:

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

REST PUT方法的建议/有效请求负载是多少?

REST中的PUT与POST

服务器接收请求。 在服务器上,您有一个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);

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

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

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

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

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

ASIHTTPRequest网站

不确定这是否回答了你的问题,但是作为一个建议,所以你不必处理很多服务器端的东西,使用Parse