ice proxy

来源:互联网 发布:oracle数据库设计实例 编辑:程序博客网 时间:2024/05/17 03:22

Proxy

Proxy是ICE客户端里的概念。客户端通过Proxy访问服务器端上的Object,通过Proxy调用服务器端Object上提供的接口。在客户端上一般有类似以下代码:

    Ice::ObjectPrx base = ic->stringToProxy("SimplePrinter:default -p 10000");    // Printer Proxy    PrinterPrx printer = PrinterPrx::checkedCast(base);    printer->printString("Hello World!");

Proxy又分为几种,包括:

Direct Proxy

Direct Proxy,这里的direct意指这个proxy访问的object时,是否携带了地址(EndPoint)信息,例如上面例子中SimplePrinter:default -p 10000就是一个地址。

Indirect Proxy

Indirect Proxy相对Direct Proxy而言,其没有具体的地址,仅仅是一个符号。通常包含两种形式:

  • SimplePrinter
  • SimplePrinter@PrinterAdapter

为了获取真正的地址,客户端需要一个定位服务(location service)来获取这个符号对应的地址。ICE中提供了一些默认的服务程序,IceGrid就是其中之一,而IceGrid的作用就包括定位具体的地址,即翻译符号地址到具体的地址。

这里Indirect Proxy可以看作一个域名,而Direct Proxy可以看作是IP地址。Indirect Proxy使用时,就需要借助DNS翻译得到域名对应的IP地址。

Fixed Proxy

由于Proxy是用于与服务器端的Object通信的,客户端借助Proxy来访问服务器端的Object,所以Proxy通常都会对应一个真实的网络连接。在ICE中,一般的Proxy于网络连接(Connection)实际上是没有太大关联的。一个Proxy可以没有Connection,也可以在建立这个Connection后又断开之。但是,ICE提供了一种特殊的Proxy,Fixed Proxy,这种Proxy紧密地与一个Connection绑定在一起,其生命周期被强制关联起来。

0 0