Zeroc Ice Slice语言使用 HelloWorld】的更多相关文章

Slice介绍         为了开发多语言支持的RPC服务,需要一种中立的新语言来定义这个服务接口,以便各个编程语言能够准确无误地理解和翻译接口,为此Ice设计了Slice语言.Ice开发的第一步就是学习Slice语法,并掌握实际项目开发中所必须的一些技巧.         Slice定义的基本数据类型: Type Range of Mapped Type Size of Mapped Type bool false or true ≥ 1bit byte -128-127 or 0-255…
ICE:Slice语言(二)--源文件和词法规则:    文件命名    Slice的源文件以.ice为扩展名.   对于大小写不区分的系统(例如DOS),文件的扩展名可以大写,也可以小写,例如Click.ICE是有效的.二对于大小写敏感的系统(如Unix),Clock.ICE是非法的(此时的扩展名应该小写).    文件格式    Slice是无格式语言,因此你可以使用空格.横向和纵向制表符.换行符安排你的代码布局.Slice中语义和定义的布局没有关联.   预处理    Slice支持#if…
ICE:Slice语言(一)-编译 Introduce简介 Slice(Specification language for ice)是分离对象和对象的实现的基础的抽象机制.Slice在客户端和服务器端之间建立契约,描述应用程序使用的类型对象的接口.这样的描述是独立于实现功能的语言的,所以服务器和客户端的实现所使用的语言没有任何关系. 编译器将语言无关的定义翻译为特定语言的类型定义和API.这些翻译后的类型定义和API将被使用在应用程序的功能中,以及用来与Ice交互.这种从一种语言无关的定义到各…
Slice最大的用处就是为我们使用Ice进行编程,代劳绝大部分的重复性代码,并提供一些帮助性的框架代码,如用于AMI和AMD方式进行异步编程的回调框架. 当Slice不为我们生成代码时,我们仍然可以按照Ice规范进行开发,但重复性细节代码很多.我们在进行一次远程调用时,调用方和执行方必要的代码如下: Slice为我们生成的AMI 异步方法调用的回调框架代码有: 我们在使用AMD 异步方法调度(分派)进行对象的后端编程时,使用到的回调框架代码,Slice为我们生成的代码: Slice只是为我们提供…
摘自: http://weibo.com/p/1001603869896789339575 原文地址: http://www.oschina.net/question/865233_242146 吴治辉,@mycat,拥有超过 15 年的软件研发经验,精通 Java 编程,专注于电信软件和云计算方面的软件研发,参与过众多与分布式.云计算相关的大型项目的架构设计和编程,具备丰富的大型项目架构设计经验,是业界少有的具备很强编程能力的S级资深架构师,目前就职于惠普.此外,他还是国内知名开源分布式数据库…
前言: 本来建博客是为了和大家分享一些前端的开发经验和心得呢,但是阴差阳错,第一篇技术博客确实关于跨平台,跨语言服务端调用的解决方案---ZEROC ICE. 最近一个项目涉及到java.python.C++三种不同语言间的互相调用.经过反复讨论决定采取ZEROC来实现,在实现的过程中发现网上的很多资料要么很不完整,要么就是过于基础,完全不能满足项目的需要.尤其是对于如何使用ice进行分布式编程介绍更少,除了C++语言外,其他语言的ice使用说明也存在明显不足,虽然不同语言原理一样,但是对于初学…
Ice介绍         Ice(Internet Communications Engine)是ZeroC公司的杰作,继承了CORBA的血统,是新一代的面向对象的分布式系统中间件.Ice是RPC通讯领域里最稳定.强大.高性能.跨平台.多语言支持的老牌开源中间件,特别适合于当前互联网领域中一个平台存在多种开发语言编程,以及网站和app应用并存的复杂大型项目.         RPC(Remote Procedure Call Protocol 远程过程调用协议),是一种通过网络从远程计算机程序…
搭建Ice环境 1. Linux(推荐,更接近真实生产环境) 2. Windows(方便学习开发)     下载安装包:https://zeroc.com/downloads (百度网盘链接:http://pan.baidu.com/s/1dEnoNdB 密码:tbm9)      添加环境变量:ICE_HOME指定到安装目录,在PATH加入%ICE_HOME%\bin;        查看是否安装成功cmd 输入 slice2java -v 可看到版本信息. 3. 目录文件说明     bin…
项目需求:在Ubuntu16.04系统下安装并使用ICEgrid 3.7进行c++和Java Springboot开发环境的通信,下面逐一介绍各个步骤的详解: 一:Ice Lib的安装 参考官网地址:https://doc.zeroc.com/ice/latest/release-notes/using-the-linux-binary-distributions#id-.UsingtheLinuxBinaryDistributionsv3.7-InstallingIceonUbuntu 首先添…
Zeroc Ice简介   Zeroc ICE(Internet Communications Engine ,互联网通信引擎)是目前功能比较强大和完善的RPC框架,支持跨平台.跨语言调用.它非常灵活,可以通过TCP.UDP.SSL/TSL或WebSocket连接,支持同步.异步调用,以及服务器和客户端之间的双向连接.Zeroc ICE的效率非常高,它使用一种高效的二进制协议,对带宽的消耗比较小.甚至对于通过卫星的RPC调用,Zeroc ICE还可以对数据流进一步压缩.另外Zeroc ICE还可…
ice作为一种rpc框架,为主流平台设计,包括Windows和Linux,支持广泛的语言,包括C++,Java,C#(和其他.Net的语言,例如Visual Basic),Python,Ruby,PHP和ActionScript. 安装ice 1.官网下载地址  https://zeroc.com/downloads/ice 2.安装程序,本文安装位置E:\Program Files\ZeroC\Ice-3.6.3 3.配置环境变量 计算机->属性->高级系统设置->环境变量 1)新建立…
Zeroc ICE ( Internet Communications Engine )中间件号称标准统一,开源,跨平台,跨语言,分布式,安全,服务透明,负载均衡,面向对象,性能优越,防火墙穿透,通讯屏蔽.https://zeroc.com/ 该中间件在跨语言集成时比较方便,如下就是在JAVA C++之间交互时,启用ssl通讯的设置 1. 证书生成 ICE提供申请证书的脚步,通过ICE脚本,可生成所需的证书.进入Ice-3.5.1/cpp/src/ca目录. 1.1. 生成根证书,输入证书相关信…
想搞清楚slice为我们生成了什么样的框架代码,就先搞明白Ice的远程调用框架暗中为我们做了些什么? Ice将Ice Object的方法调用分为三个阶段(或步骤),分别是begin,process和end.如下图: 或者说Ice将一次完整的Ice Object方法调用划分成上面三个阶段.基于上面的划分,又将三个阶段应用到远程调用中.其中将begin和end阶段应用在Object Proxy端,而process阶段应用在Object Servant端.远程调用实质在应用ActiveObject模式…
在ZeroC Ice中定义了三种基本对象类型. 它们分别是IceProxy::Ice::Object(于Ice/Proxy.h),Ice::Object(于Ice/Object.h)和Ice::LocalObject(于Ice/LocalObject.h). 这三种基本对象类型的基类都是Shared.Shared类的作用就是一个引用计数,利用引用计数管理内存,在c++11之前,相当于boost::shared_ptr的作用.在整个Ice项目中一切需要使用引用计数的类都继承自Shared.而上面定…
Rust语言之HelloWorld Web版 下面这篇文章值得仔细研读: http://arthurtw.github.io/2014/12/21/rust-anti-sloppy-programming-language.html Iron是一个Web框架,是建立在hyper之上的,hyper是完全用Rust写的http库.因此,Iron相当于Tomcat/Jetty之于Java, Cowboy之于Erlang.下面就使用Iron写一个WebServer,很简单,当用户在浏览器地址栏访问htt…
Rust语言之HelloWorld 参考文档: http://doc.crates.io/guide.html 1 什么是Cargo 相当于maven/ant之于java, automake之于c, Cargo是rust的项目管理工具.用 Cargo 做4件事情: 1) 配置管理 2) 下载项目依赖 3) 调用编译器rustc编译,发布程序 4) 总之开发rust的一揽子解决方案 当你安装了rust, cargo就随之安装了. 2 创建第一个rust程序HelloWorld $ cargo ne…
IceGrid Node介绍 绝大多数分布式系统都有一个共同特点,即分布在各个主机上的节点进程并不是完全独立的,而是彼此之间有相互联系和通信的.集群对集群中的节点有一些控制指令,如部署.启停或者调整某些参数等.IceGrid为了达到这个目标,也设计了一个特殊的节点进程-IceGrid Node,它的目标有以下几个:         1. 负责IceBox的装载和启停:         2. 采集主机的负载信息:         3. 执行控制器IceGrid Admin的指令:        …
Registry介绍         对于多个IceBox集群该怎么负载均衡?以服务注册表Registry为依托的Service Locator组件,以及依赖其而诞生的强大的分分布式框架-IceGrid.         IceBox没有地方存储的Endpoint信息.为了解决这个问题,诞生了服务注册表Registry组件,它是一个以二进制文件形式储存运行期Ice服务注册信息的独立进程,支持主从同步,从节点可以分担查询请求,类似MySQL读写分离的功能,并防止单点障.同时依托Registry的功…
IceBox介绍 IceBox就像一个Tomcat,我们只要写N个Ice服务代码,用一个装配文件定义需要加载的服务列表.服务器的启动参数.启动次序等必要信息,然后启动IceBox,我们的应用系统就能够正常运行了.IceBox采用的是UNIX上通用的方式-属性文件的方式,其可能的原因的可以省去复杂的XML解析和相关的lib库,并能快速加载和启动程序. IceBox使用         要将一个Ice服务纳入到IceBox中,我们需要引入IceBox.jar这个库,另外只需要让这个服务实现类继承Ic…
刚刚在服务端(192.168.0.113)和客户端跑通(192.168.0.188),在这里记录,作为备忘. 第一步:读readme,先用vs2010生成subscriber.exe和publisher.exe,注意,先打开publisher,运行,生成publisher.exe.然后再把subscriber添加工程中,运行,生成subscriber.不知道其他人碰到过下面这个情况没有,我是遇到了.如果单独运行subscriber,会出问题.只有两个项目在同一个workspace里运行,才能生成…
继上文,我们使用ZeroC Ice传递大块数据时,通常有两种做法,一种是一次请求,另一种就是分多次请求(,这种做法在官方文档有例子).选哪一种根据需要而定. 当分多次请求来完成一大块数据,到底选择每次请求多大的数据合适呢? 首先清楚下面几点,每次请求应该用 two-way进行,也就是 request - reply 模式来确保数据发送.one-way模式是只管单向发送的.那么就有下面几个点 一个最小的Ice reply包大小为 79 一个Ice心跳包大小为 68 一个分段的ack包大小为 60…
继上一篇<ZeroC ICE的远程调用框架>,本篇再来说其中的AMD.(本篇需要重写) 当在ice文件中声明某个接口方法Method为["amd"]后,接口方法在stub类生成的远程调用框架代码不会变,但在skeleton类生成的就不是_iceD_Method和Method,而是_iceD_Method和Method_async.而amd模式和非amd模式的代码生成模板区别在于,_iceD_Method调用Method_async代替Method,并且在调用后不进行out方…
使用zeroc ice 中的icebox 的时候多服务会有多个服务实例,每个实例都要写日志文件,所以要配置多个日志文件区分开来, 类似这样  orderservice_1_20160101.log    orderservice_2_20160101.log 看了java 的解决方案是可以提供一个变量来解决,我看log4net 就是没有找到这个东东但是看到了根据 loggername 去区分配置,这个不是动态的根据服务数量去生成日志文件,但是可以手工去配置也算是暂时解决了,但是不知道 如何去动态…
Ice介绍         Ice(Internet Communications Engine)是ZeroC公司的杰作,继承了CORBA的血统,是新一代的面向对象的分布式系统中间件.Ice是RPC通讯领域里最稳定.强大.高性能.跨平台.多语言支持的老牌开源中间件,特别适合于当前互联网领域中一个平台存在多种开发语言编程,以及网站和app应用并存的复杂大型项目.         RPC(Remote Procedure Call Protocol 远程过程调用协议),是一种通过网络从远程计算机程序…
我们在ice文件中定义的class或interface,slice都会为我们生成stub存根类和skeleton骨架类.在这里要注意slice并没有分别生成两份单独用在客户端或服务端的接口给开发分发.在ice中,client和server只是相对于ice object的使用关系,client即使用代理远程调用ice object的一方,server相对就是为ice object提供执行servant的一方.并非我们传统意义上的c/s结构中的client和server.ice object既可以存…
四.写下第一段Go语言代码“Hello World” 小建议:就是文件夹路径或者文件名称不要出现中文,可能会导致一些不必要的麻烦(编译失败) 在sublime中,我们在src文件夹上面,单击右键“New file”.新建一个go文件. 将这个文件先保存为.go格式的源代码文件.保存的快捷键是Ctrl+S,或者是点击“file”à“save”.建议使用快捷键. 1:代码详解 HelloWorld的代码框架如下. 在控制台里面找到这个HelloWorld,并且执行结果如下所示: 2:单行注释和多行注…
日期:2014年7月18日   1.简介     Go 编程语言是一个使得程序员更加有效率的开源项目.Go 是有表达力.简 洁.清晰和有效率的.它的并行机制使其很容易编写多核和网络应用,而新奇的类型系统允许构建有性的模块化程序.Go 编译到机器码非常快 速,同时具有便利的垃圾回收和强大的运行时反射.它是快速的.静态类型编译语言,但是感觉上是动态类型的,解释型语言.     Go 是第一个实现了简单的(或更加简单的)并行开发,且跨平台的类 C 语言.   2.Go语言文档查看     安装好Go语…
以输出HelloWorld为目标 Go的发展史 Go语言诞生(2007年的谷歌)的背景是由于软件开发的新挑战: 多核硬件架构 超大规模分布式计算集群 Web模式导致的前所未有的开发规模和更新速度 Go的特点: 简单,关键字很少,只有25个 高效 生产力(复合) 云计算语言 区块链语言 安装和运行HelloWorld 吐槽一下,就这一个HelloWorld我花了大概一个多小时的时间,可能笔者比较笨,哭泣.反正就是各种运行失败, 笔者在go安装完成之后,习惯使用jetbrains的产品,所以下载了g…
go语言开发的目录 一般go语言$GOPATH 目录约定有三个子目录: src 存放源代码(比如:.go .c .h .s等) pkg 编译后生成的文件(比如:.a) bin 编译后生成的可执行文件(为了方便,可以把此目录加入到 $PATH 变量中,如果有多个gopath,那么使用${GOPATH//://bin:}/bin添加所有的bin目录) go语言开发目录规划 GOPATH下的src目录就是接下来开发程序的主要目录,所有的源码都是放在这个目录下面,那么一般我们的做法就是一个目录一个项目,…
1.新建一个名为HelloWorld.txt的文本文件. 2.将HelloWorld.txt改为.java. 3.将HelloWorld.java用文本文件的方式打开,并输入代码. 4.打开命令行,进入刚刚编辑的Java源文件目录,使用Java 命令对HelloWorld.java进行编译. 5.使用Java命令执行HelloWorld.class文件,输出HelloWorld. 6.实验总结:通过这次的实验,我发现Java语言和C语言有很大的 不同之处,总体来说,感觉Java语言更加清晰明了.…