可可客户端/服务器应用程序

10

在Cocoa中,是否有当前被认为是创建多层或客户端服务器应用程序的最佳实践方法?

我是一位经验丰富的Web开发人员,非常喜欢Python。但我对Cocoa还不熟悉。我正在考虑编写一个大型医院的患者管理系统,该系统预计会随着时间存储大量数据,但在单个会话期间传输的数据非常轻量级(主要只是文本)。通信假定在本地网络(有线或无线)上进行。当然,它必须非常安全。

我能想到的最好方法是编写一个Python REST web服务并通过Cocoa应用程序连接到它。也许我甚至会使用Python编写Cocoa应用程序本身。

看看Cocoa,我发现像CoreData这样的技术非常出色,但我没有找到类似于客户端服务器开发的东西。我只是想确保我没有遗漏任何内容。

你怎么看?

真实世界的例子将不胜感激。

先谢谢了。

5个回答

6
如果您可以控制客户端和服务器,并且可以将客户端限制为仅适用于OS X,我赞同Marc的答案。Cocoa的分布式对象是一项神奇的技术,使得RPC风格的客户端-服务器应用程序变得非常容易。
如果上述要求对您来说过于严格,您在Cocoa世界中仍有许多可用选项:
  1. 您可以使用PyObjC在Python中编写整个客户端应用程序。采用这种方法,您可以使用Python标准库中熟悉的标准网络代码。Twisted也与Cocoa运行循环很好地集成(在PyObjC示例代码中有示例),我已经成功地使用Twisted进行了来自Cocoa应用程序的网络通信。如果选择这条路线,您可能希望使用Objective-C编写客户端应用程序并将Python代码作为插件加载(使用NSBundle)。PyObjC的py2app可以从Python代码编译可加载的捆绑包。

  2. 您可以使用NSURLConnection高级访问HTTP服务器。

  3. 降低抽象层级,您可以使用Cocoa的NSStream实现您的网络协议。类文档在这里,链接到演示HTTP和SOAP协议的示例代码。

  4. 您可以进一步降低级别并使用CFNetwork类。NSStream基于CFNetwork,但是使用CFNetwork可以更低级别地控制线路。

最后,苹果公司用于客户端-服务器架构的技术是WebObjects框架。

3

Cocoa有可移植分布式对象,它可以让你使用纯Objective-C和Cocoa构建客户端/服务器应用程序,可以跨进程或网络进行通信。

不幸的是,这是Cocoa中较难学习的内容之一。分布式对象没有更新以跟上像绑定这样的新技术,也没有很多示例或文档(许多教程甚至早于OS X)。即使对于经验丰富的Cocoa程序员,在对象通过复制或代理对象传输的方式方面也有很多“陷阱”。例如,你可以从服务器传输NSURL,并且如果将其转换为字符串或在调试器中查看它,则似乎很好,但如果尝试在NSURLConnection中使用它,则客户端会崩溃。

根据你的经验,如果使用Web服务可能更容易和快速,但如果想要将整个项目保留在Cocoa中,仍然值得一看。如果你想看一个例子,这里有一个教程


1

0
我已经为Cocoa编写了一个服务器和客户端类。 使用这些类可以非常容易地生成服务器或客户端应用程序,而无需了解套接字和C语言相关的知识。 请访问我的网站sourceforge.net项目网站查看详情。

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接