分布式对象简介
看OC官方文档的时候,偶尔可以看到Distributed Objects这两个单词,这里简单了解一下分布式对象
什么是分布式对象呢?
分布式对象技术是在面向对象技术的基础上发展起来的,它要解决的主要问题是位于不同进程中的对象之间的调用问题。
关于分布式对象
Cocoa的分布式对象体系结构使处于不同线程或任务且可能在不同的机器上的对象能够透明地彼此发送消息。尽管线程和任务有很多种方式相互通信,但是分布式对象将这种机制隐藏在标准Objective-C消息传递机制之后。本地和远程消息的语法是相同的。
远程消息可以同步或异步方式发送。当发送同步消息时,发送方等待应答,阻塞当前运行,就像本地消息一样。当发送异步消息时,发送方将继续执行而无需等待应答。任何来自远程对象的响应将被忽略。
分布式对象可用于将复杂的任务划分为独立的代码路径并独立运行,但是仍然可以像它们一起运行一样进行协作。比如,一个应用程序可以划分为图形前端和计算后端。前端可以接受所有用户输入并告诉后端执行各种操作。后端可以处理“繁重的工作”并在可以使用结果时通知前端来刷新用户界面。因为前端和后端独立运行,前端可以在后端繁忙时继续与用户进行交互。
分布式对象还可以用于实现分布式计算或并行处理。如果是大型作业可以拆分为多个较小的作业,这些作业分布在一个多处理器机器上或多台机器上,则可以利用所有处理器的组合计算能力来完成该作业。分布式对象可以简化应用程序体系接哦股和分布式部分之间的通信。
Cocoa允许分布式对象通过Mach端口、消息端口、sockets进行通信。前两个仅限于在同一台机器上进行通信,而sockets可以通过大型网络进行通信(包括Internet)。
在一个对象可以从其他进程接受消息之前,它必须分配了一个通信端口并将其提供给他人使用。Cocoa为每种受支持的通信端口类型提供名称服务器的访问服务。一个对象可以将其端口注册为适当的名称服务器,以便其他进程找到它。如果是sockets,还可以将对象的socket发布为Bonjour网络服务。其他像要与此对象进行通信的进程可以查找该对象的通信端口,按照名称进行请求,然后将分布式对象连接附加到该对象上。
分布式对象架构
分布式对象通过使服务器进程“vend”或公开成为其他客户端进程可以连接的对象来进行操作。当连接建立后,客户端进程将调用vended对象方法之一,就像该对象存在于客户端进程中一样(语法不变)。Cocoa和Objective-C运行时系统处理流程之间必要的数据传输。
图1显示了分布式对象系统中涉及的许多对象,以及如何将消息从客户端进程传递到服务器进程。该过程如下:
更多内容参见官网文档