数据交换格式简介
1. 简介
A. 分布式系统
B. 打包和解包操作
C. 传输模式:1. 网络传输,API接口。2. 文件传输。
2. JSON数据格式
a. 对象, key-value形式。{}
b. 数组,[]
{
"dates":{
"date":[
{
"id":"1",
"name":"JSON",
"abb":"JavaScript Object Notation"
},
{
"id":"2",
"name":"XML",
"abb":"eXtensible Markup Language"
},
{
"id":"3",
"name":"YAML",
"abb":"Yet Another Markup Language"
}
]
}
}
3. 实例代码
A. Marshal=>序列化
B. UnMarshal=>反序列化
C. 应用场景:Api接口
XML数据交换格式
4. 简介
A. 可扩展标记语言。
B. 声明、根标签、子元素、属性
<?xml version="1.0" encoding="UTF-8" ?>
<dates>
<date>
<id>1</id>
<name>JSON</name>
<abb>JavaScript Object Notation</abb>
</date>
<date>
<id>2</id>
<name>XML</name>
<abb>eXtensible Markup Language</abb>
</date>
<date>
<id>3</id>
<name>YAML</name>
<abb>Yet Another Markup Language</abb>
</date>
</dates>
5. 实例代码
A. Marshal=>序列化
B. UnMarshal=>反序列化
C. 应用场景:配置文件以及webservice, 比如soap协议
msgpack数据交换格式
6. 二进制的json协议
A. 性能更快。
B. 更省空间。
7. 应用实战
A. Marshal=>序列化
B. UnMarshal=>反序列化
C. 应用场景:Api通讯
protobuf数据交换格式
8. Protobuf协议简介
A. Google推出的数据交换格式。
B. 二进制的。 C. 基于代码自动生成
9. Protobuf开发流程
A. IDL编写
B. 生成只定语言的代码
C. 序列化和反序列化
10.IDL编写
11.IDL编写
1. 枚举类型
enum EnumAllowingAlias {
UNKNOWN = 0;
STARTED = 1;
RUNNING = 2;
}
2. 结构体类型
message Person {
//后面的数字表示标识号
int32 id = 1;
string name = 2;
//repeated表示可重复
//可以有多个手机
repeated Phone phones = 3;
}
12. Golang应用
A. 安装protoc编译器,解压后拷贝到GOPATH/bin目录下
B. https://github.com/google/protobuf/releases
C. 安装golang代码插件, go get -u github.com/golang/protobuf/protoc-gen-go
14. Golang实战
A. 生成代码, protoc --go_out=. *.proto