最近正在看 Distributed Programming with Ice,看到IceGrid这部分了。一直以来想找到关于Ice的负面评价——没找到。我不相信。我秉承任何系统都是有缺点的这个理念,相信Ice有不如其它系统的地方。
对于客户端需要直接访问硬件的系统,用C++开发比较好,目前搜索了许多与C++配合的中间件。但是C++能用的中间件比较少,使用CORBA,COM都不合适。最希望能够与 Java 中间件联系,考虑了 Hessian。但是发现 Hessiancpp 已经数年不更新了,不能作为一种可靠的通讯技术手段。相对于ACE、TAO等高端中间件技术,还是使用 ZeroC ICE 比较合适。
在阅读 ICE 文档过程中发现它作为中间件是非常合适的,在性能和可靠性方面有众多的考虑,果然不同凡响。但是涉及到数据库访问方面并没有过多提及。虽然我还没看到 Freeze,但是从介绍中可以知道,ICE的持久化使用的berkeley db,这是一个本地数据库系统。
对于需要大型数据库系统,如Oracle的环境中,应该如何使用ICE,在网上查找了N次,均无明确表示。在ZeroC 论坛上有一个介绍说,要自己写 Servant ,而不能使用 Freeze。也就是说ICE并不负责访问数据库。数据库访问层DAO要由开发者自己去做。
以前在使用 Java 时有 Spring + Hibernate 非常的强大的中间层、数据库访问架构,现在对比之下ICE应该相当于Spring,但是C++的世界里还没有很好的ORM工具。所以开发访问数据库的工作量还是比较大的,而且开发一个好的DAO也不容易,要考虑到许多问题。
另外,当需要C++访问Java服务器的时候,使用ICE做沟通应该是相对好的解决方案。C++ 客户端访问ICE,然后由ICE调用Java创建的Servant 去访问 Spring 中间件。在大型企业系统中,企业的基础系统往往不是由C++构成就是由Java构成,因此ICE能够成为两者的粘合剂。但是这种访问的效率如何,现在还不知道。
对于直接使用TCP,UDP — 这些太底层了,而且要考虑线程,并发,缓存,容错,分布……实现一个健壮的系统并不容易。为何不使用FTP,HTTP — 这些太高层了,存在效率问题,而且也不是真正的中间层融合。
一个选择方案是Java服务器作为基础平台,通过ICE为各种语言设施提供访问接口,它的效率应该在Web Service之上。
另一个更好的方案是使用ICE作为基础平台,这显然需要更大的工作量,更大的困难和挑战。
以上是看书期间对读到的内容所作的思考,可能相当不成熟。权且记录下来,以后加以验证是否可行。
分享到:
相关推荐
Zero Ice中文教程里面详细介绍了Ice的分布式设计,中文版本。
zero ICE快速入门文档, ice是最优秀的rpc框架。 4、开发服务端代码如下 步骤一:编写Servant类即带有Disp的存根文件也就是说继承_HelloWorldDisp 这个类,这个类是个抽象类定义如下: public abstract class _...
远程调用框架 Zero ICE 3.5.1 jar
Ice zero分布式程序设计Ice zero分布式程序设计Ice zero分布式程序设计Ice zero分布式程序设计Ice zero分布式程序设计
2.2.2 云原生go-zero微服务框架设计思考@万俊峰.pdf
ICE是ZEROC的开源通信协议产品,它的全称是:The Internet Communications Engine,翻译为中文是互联网通信引擎,是一个面向对象的中间件,源码供大家研究使用。
Zero ICE,Zeroc ICE,ice,linux,2017年最新版的Zero ICE版本3.7.0,linux版本 Zero ICE,Zeroc ICE,ice,linux,2017年最新版的Zero ICE版本3.7.0,linux版本
教程包括: 第一部分 Ice综述 第二部分 核心概念 第三部分 高级Ice 第四部分 Ice服务 附录ice各种配置说明
平台编译环境:VS2017 ICE版本:3.7.7 ICEbuilder:5.0.9 源码中有两套程序: Server:启动服务器,等待连接 。连接后可双方通信 Client:连接服务器,与服务器通讯。 Slice: 手写几个接口即可。
ICE开发资料,帮助程序使用ZERO-ICE进行C++开发
介绍ICE互联网通讯引擎是什么,以及其工作原理。附有简单的源代码,可以实现测试使用。
ICE 异步调用 按照网上已有的例子,客户端调用需要加入["ami"]元数据指定,但ICE 3.4以后的版本不支持,所以对于ICE3.4以后的版本可以用begin_API进行异步调用。本资源的ICE的版本为3.6.1,所以需要提前下载好ICE...
ICE 3.4.1 在移植到ARM Linux中时,double型的数据会有错误。见我在ZeroC发的帖子: http://www.zeroc.com/forums/bug-reports/5308-double-data-format-arm-linux-not-correct.html 在移植前,需要对源代码进行一些...
基于ICE中间件实现的传文件 InstallService UpdateService dllICE
zeroc_ice u3d tcp socket c# www.zeroc.com ice的unity3d版本。 独家发布。外边绝对没有。 需要咨询。可以给我发信息。
Ice-3.6.4-msvc2015.msi zero-ice msvs2015 Ice-3.6.4-msvc2015.msi zero-ice msvs2015
基于ICE的可靠的、顺序的消息传输框架,发送消息时,先将消息持久到本地,等消息成功发送到目标机器后,删除本地消息。开发此框架的目的是为了公司业务数据的同步。消息节点有id和group,支持id、group以及其他任意...
python安装ice: pip install zeroc-ice
Ice源码~~Ice源码~~Ice源码~~Ice源码~~Ice源码~~Ice源码~~Ice源码~~Ice源码~~
zero_imager