•
Slice(Specification Language for Ice)是一种用于使对象接口与其实现相分离的基础性抽象机制。 Slice 在客户与服务器之间建立合约,描述应用所使用的各种类型及对象接口。这种描述与实现语言无关,所以编写客户所用的语言是否与编写服务器所用的语言相同,这没有什么关系。
•
Slice 定义由编译器编译到特定的实现语言 。编译器把与语言无关的定义翻译成针对特定语言的类型定义和 API。开发者使用这些类型和 API 来提供应用功能,并与 Ice 交互。用于各种实现语言的翻译算法称为语言映射
•
Ice 目前定义了 C++ 和 Java 的语言映射
•
•
因为 Slice 描述的是接口和类型 (不是实现),它是一种纯粹的描述性语言;你无法用 Slice 编写可执行语句
slice的一些特点:
•
文件命名和文件格式
•
预处理
•
定义次序
•
注释 支持 C++注释模式
•
关键字 标识符
•
slice 支持的基本数据类型
•
接口 操作 以及异常定义
•
模块
•
Slice 编译器
ice文件例子
•
#include "pushcommon.ice"
•
[["java:package:segi.common"]]
•
module push{
•
module message{
•
module writeMessage{
•
["java:getset", "java:serializable"]
•
struct StationMessageParams{
•
long
userId
;
•
string sender;
•
int userType;
–
//
用户类型
•
};
•
["java:getset", "java:serializable"]
•
struct MessageParams{
•
int sendType;
•
int notice;
•
string communityId;
•
StationMessageParams stationMessageParams;
•
ContextMap extra;
•
StringList group;
•
ContextMap paramsMap;
•
};
•
interface WriteMessageApiService{
•
["amd"] void writeMessage(MessageParams messageParams , out Head head);
•
};
•
};
•
};
•
};
开发中slice使用场景
•
客户与服务器使用不同开发环境 时slice编译情景