Cocoa客户端/服务器应用程序
-
03-07-2019 - |
题
Cocoa中是否存在目前被认为是创建多层或客户端服务器应用程序的最佳实践的方法?
我是一位经验丰富的网络开发人员,我非常喜欢Python。我虽然是Cocoa的新手。我正在写的应用程序是一个大型医院的患者管理系统。预计系统会随着时间的推移存储大量数据,但在单个会话期间传输的数据非常轻(大多数只是文本)。假设通信通过本地网络(有线或无线)发生。当然,它必须是高度安全的。
我能想到的最好的方法是编写一个Python REST Web服务并通过Cocoa应用程序连接到它。也许我甚至会使用Python来编写Cocoa应用程序本身。
看看Cocoa,我在Cocoa中看到了非常棒的技术,比如CoreData,但我找不到任何与客户端服务器开发相似的技术。我只是想确保我没有遗漏任何东西。
您怎么看?
非常感谢真实世界的例子。
提前致谢。
解决方案
如果您同时控制了客户端和服务器,并且您可以将客户端限制为仅限OS X,那么我会回答Marc的回答。 Cocoa的分布式对象是一项了不起的技术,使得RPC式客户端 - 服务器应用程序非常容易。
如果上述要求对你来说限制太多,你在Cocoa世界中仍有很多选择:
-
您可以使用PyObjC在Python中编写整个客户端应用程序。使用此方法,您可以使用Python标准库中熟悉的标准网络代码。 Twisted 还与Cocoa运行循环(PyObjC示例代码中的示例)很好地集成,并且我使用了很多成功在Cocoa应用程序中使用Twisted进行网络通信。如果您选择这条路线,您可能希望在Objective-C中编写客户端应用程序代码并将python代码作为插件加载(使用NSBundle)。 PyObjC的
py2app
可以从python代码编译可加载的包。 -
您可以使用NSURLConnection对基于HTTP的服务器进行高级访问。
-
降低抽象级别,您可以使用Cocoa的NSStream来实现您的网络协议。类文档是这里,链接到演示HTTP和SOAP协议的示例代码。
-
您可以进一步降低级别并使用CFNetwork类。 NSStream基于CFNetwork,但您可以使用CFNetwork对线路进行较低级别的控制。
醇>
最后,用于客户端 - 服务器架构的Apple技术是 WebObjects 框架。
其他提示
Cocoa拥有可移植分布式对象,可让您以纯粹的方式构建客户端/服务器应用程序Objective-C和Cocoa,可以跨进程或跨网络进行通信。
不幸的是,这是在Cocoa中学习的难题之一。分布式对象尚未更新以跟上绑定等新技术,没有很多示例或文档(许多教程都是旧版本,有些甚至是OS X之前的版本)。还有很多“陷阱”,即使对于有经验的Cocoa程序员来说,对象也可以作为副本或代理对象通过线路传输。例如,您可以从服务器传输NSURL,如果您将其转换为字符串或在调试器中查看它似乎没问题,但如果您尝试在NSURLConnection中使用它,您的客户端将崩溃。
根据您的经验,使用Web服务可能更容易,更快捷,但如果您希望将整个项目保留在Cocoa中,仍然值得一试。如果您想查看示例,请参阅教程。
通常,所有其他客户端/服务器框架的想法都适用。
请看这个链接: http://developer.apple.com/互联网/ web服务/ webservicescoreandcfnetwork.html
我编写了一个服务器和一个客户端类,用于Cocoa。 使用这些类可以很容易地生成服务器或客户端应用程序,而无需了解套接字和C-stuff 只需查看我的网站或 sourceforge.net项目网站。
查看 NSConnection <的api / a>和 NSDownload to处理网络连接。 NSString 类也有方法喜欢 + stringWithContentsOfURL:encoding:error:可能有用。
然后有 NSXMLParser 和 NSXMLDocument 阅读xml数据