开发分布式iPhone/iPad应用程序的框架建议

开发分布式iPhone/iPad应用程序的框架建议,iphone,ipad,ios4,xamarin.ios,distributed-apps,Iphone,Ipad,Ios4,Xamarin.ios,Distributed Apps,是否有支持iPhone/iPad的分布式应用程序框架(商业也可以) 我在框架中寻找的是: 允许我重点讨论应用程序逻辑 我不必编写“低级”网络编程代码(我已经做了太多次,不想再做了=p) 应该积极维护(受欢迎就好) 基本上,我可以发展得更快 我们计划开发一个软实时TCP/IP客户端/服务器应用程序,其中有许多iPhone/iPad客户端(30+)通过LAN连接到单个服务器。服务器很可能运行Windows(除非框架不支持它) 我环顾四周,发现: (看起来还是很粗糙?) (单声道+目标-C)

是否有支持iPhone/iPad的分布式应用程序框架(商业也可以)

我在框架中寻找的是:

  • 允许我重点讨论应用程序逻辑
  • 我不必编写“低级”网络编程代码(我已经做了太多次,不想再做了=p)
  • 应该积极维护(受欢迎就好)
基本上,我可以发展得更快

我们计划开发一个软实时TCP/IP客户端/服务器应用程序,其中有许多iPhone/iPad客户端(30+)通过LAN连接到单个服务器。服务器很可能运行Windows(除非框架不支持它)

我环顾四周,发现:

  • (看起来还是很粗糙?)
  • (单声道+目标-C)
  • (目标-C)
  • (?包括在内,因为它提到iPhone,但需要使用C++)
  • 当然,也可以选择使用普通的老式MonoTouch
  • 或者,(我不打算用这个)
我仍在决定是使用Objective-C还是MonoTouch,但倾向于使用MonoTouch,因为我们将使用.NET框架,而不仅仅局限于Mac世界


如果我添加了与我的问题无关的内容,请随时发表评论——我是iPhone/iPad世界的新手。

您需要更明确地说明您的要求。如果您只需要RESTAPI上的对象序列化(脱水/水合),那么任何支持POX或JSON的东西都可以正常工作。但是,如果您需要RPC风格的方法调用,包括身份验证、加密/数字签名、事务等,那么您需要上面列出的框架之一

如果您需要一个框架,我个人会倾向于MonoTouch WCF,因为它也可以让您稍后将客户端移动到其他平台(例如Windows Phone 7)。然后,正如您所说,现在有点困难,如果Mono团队决定在未来没有资源来投资维护它,您可能最终不得不转移到另一个框架。当然,还有一个缺点,就是您需要在应用程序中使用MonoTouch,并且不能使用Objective-C。诚然,随着iOS开发者协议的最新变化,这并不是一个很大的问题,但仍然需要记住

(免责声明:我曾在微软的WCF团队工作,因此我对产品本身有偏见)

我选择的另一个选项是Cocoa分布式对象。然而,如果服务器也运行在OS X上,那将是我的选择。我知道Windows有Bonjour,但我怀疑它是否针对服务器场景进行了优化,我也不知道苹果的RPC实现在Windows平台上有多丰富。因此,只有在我专门为苹果平台构建的情况下,我才会继续使用苹果的技术


请注意,WCF和分布式对象将为您提供RPC样式的功能,但它们不会帮助您处理任何特定场景。如果您需要/想要更高级别的抽象,例如您需要状态信息或多用户聊天,您仍然需要自己实现这些。在这一点上,看看为您提供这些特性的框架可能是值得的。例如RakNet(您在上面列出),它抽象了远程处理级别并在其上构建了其他功能。

我们已经非常成功地使用了WCF/Monotouch-有些f/work领域不是100%,但在大多数情况下,您应该会发现在Monotouch上使用WCF是轻而易举的

在monodroid和monotouch以及wm7之间共享我们所有的数据同步、模型、测试等功能非常酷(通过一些工作-这很容易实现-您需要管理多个prj文件)

请注意正确管理对wcf服务的调用,将它们保持在最低限度,保持架构简单。我们最终得到了一个相当复杂的dto,以最大限度地减少调用wcf服务来同步数据的次数——这是非常值得的,因为从零开始同步设备所需的时间现在只是原来的一小部分


使用SSL与服务器进行通信是一个难题,但我认为这更像是苹果管理它的方式

您可以使用Google协议缓冲区来实现RPC,尽管您仍然需要进行一些网络编程来传输消息。它支持C++、java、python和Objtovi-C和.NET的接口生成,这样你就可以创建一组RPC消息,并获得用于几乎所有移动平台的代码。在移动平台上的传输层,您必须自己实现

http://code.google.com/api/protocolbuffers/-主Protobuf页面(C++,Java,Python) 其中一条评论中提到了http://code.google.com/p/protobuf-net/-protobuf.net
http://code.google.com/p/metasyntactic/wiki/ProtocolBuffers-Protobuf for Obj-C

您可以使用JSON Touch+,它提供您所需的所有服务器端。您还可以使用该框架访问现有的SOAP(WCF、Axis等)服务。

根据Franci下面的回答:是的,我正在寻找RPC样式。此外,我以前从未使用过POX或JSON,因此我无法对此发表评论。想补充一点,可以使用protbuf net进行反序列化/序列化WCF/MonoTouch是否可以与Microsoft.net WCF服务通信?e、 g.用Monotouch编写的iPhone应用程序能否与运行.NET framework的Windows计算机通信?(如果这是一个愚蠢的问题,很抱歉..我只是一个新手)是的-它可以-您使用silverlight svcutil和noConfig开关创建代理,并在monotouch项目中包含生成的类-非常非常简单-在obj C中执行类似的操作将是完全不可能的,因为这将需要太多的麻烦。