stub在服务器端有什么作用?skeleton是什么?
这是维基百科上的一个图示。我已经在服务器机器和客户端机器上都安装了stub。我知道stub能够帮助客户端进行网络连接,但是在服务器端stub有什么作用呢?
另外,在上面的图中,skeleton是什么意思?
stub在服务器端有什么作用?skeleton是什么?
这是维基百科上的一个图示。我已经在服务器机器和客户端机器上都安装了stub。我知道stub能够帮助客户端进行网络连接,但是在服务器端stub有什么作用呢?
另外,在上面的图中,skeleton是什么意思?
请看下面的图片:
简单来说,stub和skeleton是Web服务安装中的对应关系。 Skeleton归属于服务提供方
,stub则归属于接收方
。在较低层次上,stub和skeleton相互通信。
从客户端的角度来看,业务对象与 stub 对象进行交流,而 stub 负责消息,并调用 Web 服务。一旦调用完成,在服务提供商方面,skeleton 是 stub 的并行对象,它接收请求消息并理解它,并将信息传递给服务端的业务对象。
存根和骨架都隐藏了一些复杂性。
存根隐藏了参数的序列化和网络层通信,以便向调用者呈现简单的调用机制。
骨架负责将调用分派到实际的远程对象实现。
http://docs.oracle.com/javase/7/docs/platform/rmi/spec/rmi-arch2.html
首先,您需要忘记骨架。自1998年以来,它们已经过时。
存根是远程对象在导出时创建的。然后,它要么绑定到注册表并通过查找获得客户端,要么作为另一个远程方法的结果直接返回给客户端。
然后,客户端使用存根作为相关远程接口的实现,执行RMI的网络部分,并与服务器JVM交互,最终调用客户端在存根中调用的相同方法在远程对象中调用。
bind()
时,它会向rmiregistry“注册”自己。当客户端执行lookup()
时,它会检查在服务器上注册了什么。没有更多,也没有更少。存根: 存根是一个小程序例程,用于代替可能稍后加载或位于远程位置的更长的程序。
骨架: 用于远程对象的骨架是一个服务器端实体,可以将调用分派到实际的远程对象实现。
ss1
,但是所有关于 ss0/1/2
的讨论都是无意义的。它们都是同一个存根的副本,就像“ss0
的序列化版本”一样。没有必要将“服务器端存根”和副本视为不同的东西进行讨论。它们都只是“存根”。 - user207421