当前位置:  开发笔记 > 编程语言 > 正文

Objective-C网络 - 最佳实践?

如何解决《Objective-C网络-最佳实践?》经验,为你挑选了1个好方法。

我正在构建一个既有服务器又有客户端的Objective-C应用程序.客户端可以向服务器发送更新,服务器需要能够向每个连接的客户端发送更新.我一直在考虑如何最好地实施这个系统,但我要求你的建议.

目前,我认为当有新的更新时,服务器将使用线程依次将更新发送到每个客户端.如果客户端超时,则会断开连接.我的网络经验很少,所以我问你的见解.

你认为这个系统会运作良好吗?如果是这样,您对如何进行线程有任何建议吗?你可以指点我的任何NS课程吗?我想要有一些我可以使用的队列.

还有其他想法吗?

编辑:我不认为客户端数量会超过50左右,最大值.



1> Barry Wark..:

只要客户端和服务器都是OS X应用程序,并且都可以使用Cocoa框架在Objective-C中编写,我强烈建议您查看Cocoa 中的分布式对象(DO)技术.我不会尝试在这里给出分布式对象的教程,只是解释为什么它可能有用......

DO为您处理异步网络详细信息(您的所有客户端更新可能发生在单个线程上).此外,与远程对象(客户端到服务器或反之亦然;一旦建立连接后DO是双向的)通信的语义与进程内通信非常相似.换句话说,一旦你有一个对远程对象的引用(实际上NSDistantObject它是连接另一端对象的代理),你的客户端代码就可以发送消息到远程对象,就好像它是本地的:

[remoteServer update:client];

来自客户或

[[remoteClientList objectAtIndex:i] update:server];

从服务器.在阅读" 分布式对象"编程指南后,我将留下设置连接和获取remoteServer或remoteClient参考的详细信息.

使用DO的缺点是你与Cocoa联系在一起; 编写使用Distirbuted Objects进行通信的非Cocoa客户端或服务器将非常困难.如果您可能希望拥有非Cocoa客户端或服务器实现,则不应使用DO.在这种情况下,我会推荐一些简单的东西,有很多跨平台和语言支持.基于HTTP的REST风格的API是一个不错的选择.查看Cocoa URL加载系统文档,了解有关如何实现HTTP请求和响应的信息.查看Apple的CocoaHTTPServer示例代码或同名的code.google.com项目,了解有关在Cocoa代码中实现HTTP服务器的信息.

作为最后一个选项,如果要实现自己的网络协议,可以查看"可可流编程指南".NSStream的子类将允许您侦听网络套接字并处理与该套接字的异步读/写.很多人为此目的使用AsyncSocket.它包装了(低级)CFStream和CFSocket,使得编写网络代码变得更加容易.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有