22

GraphEngine的核心 TSL

 4 years ago
source link: https://blog.csdn.net/shyleoking/article/details/105179739
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

上次说过GraphEngine不是组件,也不是框架,也不是数据库管理系统,他是一个引擎。那么,GraphEngine到底是什么呢?要更好的理解,我们先看一张图

i6Fni26.png!web

上面那张图很有意思,中间的TSL简直是所有能力的核心,TSL在做三件事情

  • 数据建模。理解我们的数据模型(Data Modeling)通过IDL让TSL理解 数据交换
  • 消息传递协议定义,通过ICE Slice规范实现数据的传递(Message Passing Modeling)
  • 消息交换规则定义,以Google Protobuf规范实现数据交换(Data Interchange Format Specification)

这样的好处是

  • 客户端和服务器不需要用同一种语言来编写
  • 传输数据量比传统的json、xml相比非常小、解析非常快
  • 数据通讯的时候无需序列化和反序列化

所以TSL是GraphEngine的核心。TSL一种声明性的编程语言,由于遵守了ICE Slice规范编译器可以将Slice定义编译转换为其他语言的数据类型和API。理论上支持支持C++, Java, C#, Python, Objective-C, Ruby, 和PHP。Slice只定义数据类型和接口,并不实现。TSL在C#中做了实现。

所以我们需要先确保安装了上篇要求的插件GraphEngineVSExtension.vsix插件,该插件支持TSL语言的编写,提示和编译为C#。

TSL语言非常接近C#,或者说TSL的所有语言规范和C#是一致的,因此

TSL中的保留关键字由三部分组成:所有C#关键字,TSL关键字和原始数据类型。

保留的TSL关键字

vqaaa2u.png!web

TSL内置类型

Ez6JNnM.png!web

TSL的代码结构

脚本包含声明:TSL script inclusion statement

单元:Cell construct

枚举:Enum construct

结构:Struct construct

协议:Protocol construct

服务器:Server construct

代理:Proxy construct

这些代码结构里,Struct结构好像已经没有什么用处。我们用的最多的是cell代码结构。在之后的篇章我们会来看看代码怎么写。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK