ice 主题好blog
2016-01-10 22:32
375 查看
http://www.iteye.com/topic/182975
ice平台概览
nonmutating关键字指出了 方法 操作不会修改它所操作的对象的状态。
对于nonmutating操作,换句话说,客户端的运行时可以尝试再次连接和安全的二次送出失败的请求。如果第二次发送能够到达服务器,那么万事OK。只有第二次再次失败,错误才会报告给应用(错误重试的次数可以在Ice的配置文件中配置)。
idempotent关键字指出了一个操作能够安全的执行多次。同nonmutating操作一样,Ice运行时使用idempotent来达到更积极地错误恢复。\
例如一般的get类接口。
interface Clock
对某一个操作进行两次成功的操作,其结果都一样,就像只调用了一次一样,那么这个操作就是idempotent操作。
Slice内建类型映射到JAVA类型:
bool boolean
byte byte
short short
int int
long long
float float
double double
string String
AMI
Asynchronous Method Invocation,对于客户端而言,用于表示某个服务器端接口是异步操作,需在Slice中使用metadata来修饰这个接口,例如:
["ami"] void sayHello(int delay)
AMD
Asynchronous method dispatch,这个针对于服务器端,同样表示这个接口是异步操作,需在Slice中使用metadata来修饰这个接口:
["ami", "amd"] void sayHello(int delay)
通常对于这种异步接口而言,都需要使用Slice metadata ami和amd同时修饰。
Freeze 服务
Freeze用于将Slice对象持久化到数据库中,按照Manual里的说法,它应该是一个编译器,可以生成一些持久化操作的代码。Freeze持久化对象时使用的数据库是Berkeley DB。
IceBox 服务
IceBox可用于管理服务器中的动态组件。这些动态组件本质上也是提供服务的ICE程序。在形式上,这些组件可以是动态连接库。
IceGrid服务
IceGrid相当于一个DNS解析服务,可以让服务器不用配置EndPoint,客户端也不用指定服务器的EndPoint,以方便大量的服务器部署。在一般的应用中,我们需要为ICE服务器指定绑定的网络地址(IP和端口),同时也需要为客户端指定服务器端的地址信息。当服务增加到一定数量时,就会存在管理上和配置上的麻烦。而IceGrid则是用于避免这种麻烦,将服务器端和客户端上的地址信息通过一个符号代替,就像我们把Internet上的服务器使用域名来标识一样。
但IceGrid的作用不仅如此,通过配合部署一系列称为IceGrid Node的程序,IceGrid还可以管理各个服务器的启动、关闭、宕机重启等,其中甚至包括负载均衡。
Glacier2服务
按我的理解,Glacier2就像一个网关服务器。它被部署在服务器和客户端之间,我们的服务器群部署在内网,外网不可访问,然后通过Glacier2,外部网络的客户端就可以访问内网的服务器群提供的服务。
对于服务器的开发而言,使用Glacier2,服务器端不需要做任何改动。客户端需要配置Glacier2服务的地址信息,也需要配置要使用服务器的地址信息。Glacier2通过客户端欲访问的服务器地址,在内网定位到真实的服务器,并转发请求提供服务。
Glacier2支持验证客户端,从这一点看来,它又有点像一个验证服务器。通过验证客户端,以提供被正确授权的客户端以完整服务。
管理[b]服务[/b]
ICE服务器可以提供给外部一定的管理功能,包括:关闭服务器、读取服务器配置。这个功能是通过操作Ice.Admin这个Ice Object来实现的。这个Object包含两个Facet:Process和Property,分别对应于关闭服务器和读取服务器配置功能。
对于需要管理服务器的客户端而言,可以大致通过如下代码不完成。
ICE异常:
Ice::LocalException 运行时异常 。
Ice::UserException 用户异常
Ice::TimeoutException
Ice:: ConnectionTimeoutException
java接口文件
ice平台概览
nonmutating关键字指出了 方法 操作不会修改它所操作的对象的状态。
对于nonmutating操作,换句话说,客户端的运行时可以尝试再次连接和安全的二次送出失败的请求。如果第二次发送能够到达服务器,那么万事OK。只有第二次再次失败,错误才会报告给应用(错误重试的次数可以在Ice的配置文件中配置)。
idempotent关键字指出了一个操作能够安全的执行多次。同nonmutating操作一样,Ice运行时使用idempotent来达到更积极地错误恢复。\
例如一般的get类接口。
interface Clock
{ nonmutating TimeOfDay getTime(); idempotent void setTime(TimeOfDay time); };
对某一个操作进行两次成功的操作,其结果都一样,就像只调用了一次一样,那么这个操作就是idempotent操作。
Slice内建类型映射到JAVA类型:
bool boolean
byte byte
short short
int int
long long
float float
double double
string String
AMI
Asynchronous Method Invocation,对于客户端而言,用于表示某个服务器端接口是异步操作,需在Slice中使用metadata来修饰这个接口,例如:
["ami"] void sayHello(int delay)
AMD
Asynchronous method dispatch,这个针对于服务器端,同样表示这个接口是异步操作,需在Slice中使用metadata来修饰这个接口:
["ami", "amd"] void sayHello(int delay)
通常对于这种异步接口而言,都需要使用Slice metadata ami和amd同时修饰。
Freeze 服务
Freeze用于将Slice对象持久化到数据库中,按照Manual里的说法,它应该是一个编译器,可以生成一些持久化操作的代码。Freeze持久化对象时使用的数据库是Berkeley DB。
IceBox 服务
IceBox可用于管理服务器中的动态组件。这些动态组件本质上也是提供服务的ICE程序。在形式上,这些组件可以是动态连接库。
IceGrid服务
IceGrid相当于一个DNS解析服务,可以让服务器不用配置EndPoint,客户端也不用指定服务器的EndPoint,以方便大量的服务器部署。在一般的应用中,我们需要为ICE服务器指定绑定的网络地址(IP和端口),同时也需要为客户端指定服务器端的地址信息。当服务增加到一定数量时,就会存在管理上和配置上的麻烦。而IceGrid则是用于避免这种麻烦,将服务器端和客户端上的地址信息通过一个符号代替,就像我们把Internet上的服务器使用域名来标识一样。
但IceGrid的作用不仅如此,通过配合部署一系列称为IceGrid Node的程序,IceGrid还可以管理各个服务器的启动、关闭、宕机重启等,其中甚至包括负载均衡。
Glacier2服务
按我的理解,Glacier2就像一个网关服务器。它被部署在服务器和客户端之间,我们的服务器群部署在内网,外网不可访问,然后通过Glacier2,外部网络的客户端就可以访问内网的服务器群提供的服务。
对于服务器的开发而言,使用Glacier2,服务器端不需要做任何改动。客户端需要配置Glacier2服务的地址信息,也需要配置要使用服务器的地址信息。Glacier2通过客户端欲访问的服务器地址,在内网定位到真实的服务器,并转发请求提供服务。
Glacier2支持验证客户端,从这一点看来,它又有点像一个验证服务器。通过验证客户端,以提供被正确授权的客户端以完整服务。
管理[b]服务[/b]
ICE服务器可以提供给外部一定的管理功能,包括:关闭服务器、读取服务器配置。这个功能是通过操作Ice.Admin这个Ice Object来实现的。这个Object包含两个Facet:Process和Property,分别对应于关闭服务器和读取服务器配置功能。
对于需要管理服务器的客户端而言,可以大致通过如下代码不完成。
ICE异常:
Ice::LocalException 运行时异常 。
Ice::UserException 用户异常
Ice::TimeoutException
Ice:: ConnectionTimeoutException
java接口文件
相关文章推荐
- 在Eclipse中导入dtd和xsd文件,使XML自动提示
- 在Unbuntu 上安装Phalcon
- Python中网络页面抓取和页面分析
- php 通过递归 查找父集分类/子集分类
- 简易在线投票系统(php)——投票页面
- context:exclude-filter 与 context:include-filter 转
- NodeJS基础一,安装NodeJs,express
- 【Unity入门】场景、游戏物体和组件的概念
- Hadoop 实现Writable接口
- HDU2825 Wireless Password
- cygwin安装教程以及使用notepad++编写shell脚本,并通过cygwin运行
- akka 资料收集
- java抓取动态生成的网页
- MongoDB
- 关于网络爬虫的那些事:干掉伪装的爬虫
- 毕业十年纪念
- Longest Valid Parentheses
- Python抓取和解析网页
- kruscal算法求最小生成树总结
- C#版三层登录