2010-09-14 68 views
2

支持iPhone/iPad的分布式应用程序框架(商业还可以)吗?开发分布式iPhone/iPad应用程序的框架建议

我正在寻找的框架:

  • 可以让我专注于应用程序逻辑
  • 我没有编写的“低层次”的网络编程(我已经做了它是我不想太多次做一遍= p)
  • 应积极维护(流行将是很好)

基本上,那么我就可以发展得更快。

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

我一直环顾四周,我看到:(?还是看起来相当原始)

我还没有决定是否要使用的选项的Objective-C或MonoTouch的,但是倾向于使用MonoTouch,因为我们将获得.NET框架,而不是被绑定到Mac世界。

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

+0

Per Franci的回答如下:是的,我正在寻找RPC风格。此外,我从未使用过POX或JSON,因此我无法对此进行评论。 – sivabudh 2010-09-14 23:07:03

+0

想补充一点,可以使用protbuf-net进行反序列化http://code.google.com/p/protobuf-net/ – sivabudh 2010-09-15 18:41:32

回答

2

我们已经使用WCF/Monotouch取得了巨大的成功 - 有一些f/work的区域不是100%,但是对于大多数情况下,您应该可以在WCF上轻松单击。

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

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

使用SSL与服务器进行通信是PITA,但我认为这更多的是苹果管理它的方式。

+0

WCF/MonoTouch可以与Microsoft .NET WCF服务通信吗?例如Monotouch中编写的iPhone应用程序能否与运行.NET框架的Windows机器通信? (对不起,如果这是一个愚蠢的问题......我只是新手) – sivabudh 2010-09-17 23:34:25

+1

是的 - 它可以 - 你使用带noConfig开关的silverlight svcutil创建代理,并在你的monotouch项目中包含生成的类 - 这非常简单 - 在obj c做类似的事情将是一个完整的不,因为它只需要这么多的混乱。 – iwayneo 2010-09-18 09:03:35

2

您需要更清楚地了解您的要求。如果您只需通过REST API进行对象序列化(脱水/水合),那么任何支持POX或JSON的工具都可以正常工作。但是,如果您需要RPC样式的方法调用,包括身份验证,加密/数字签名,事务处理等,那么您需要上述列出的其中一种框架。

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

(声明:我曾经在微软WCF团队工作,所以我对产品本身有偏)

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

请注意,WCF和分布式对象会给你RPC风格的功能,但它们不会帮助你处理任何特定的情况。如果您需要/希望获得更高级别的抽象,例如您需要在线信息或多用户聊天,则您仍然需要自行实施这些信息。在这一点上值得看看为您提供这些功能的框架。一个例子是RakNet(你在上面列出),它抽象了远程处理级别并在其上建立了额外的功能。

1

您可以使用Google协议缓冲区来实现RPC,但您仍然需要为传输邮件执行一些网络编程。它支持C++,Java,Python和Objective-C和.NET的接口生成,因此您可以创建一组RPC消息并获取代码,以便在几乎任何移动平台上使用它们。移动平台上的传输层您必须实现自己。

http:// code.google.com/apis/protocolbuffers/ - 主Protobuf页面(C++,Java,Python) http:// code.google.com/p/protobuf-net/ - Protobuf .NET在评论 HTTP的人提到:// code.google.com/p/metasyntactic/wiki/ProtocolBuffers - 为的Protobuf对象 -

1

您可以使用JSON触摸+ Vitche PHP Emission Framework它提供了所有服务器端需要。您也可以使用该框架访问现有的SOAP(WCF,Axis等)服务。