如何在thrift-compiler中为自定义语言创建自己的thrift语言模板?

时间:2014-10-31 11:07:30

标签: thrift thrift-protocol

我希望使用Thrift作为RPC协议从一个自定义的专有闭源语言调用Java-Server RPC-Endpoints。 (某些类似c的特定于供应商的脚本语言)

不存在任何绑定。

如何创建自己的thrift-compiler-plugins来生成特定于语言的代码? 没有在文档中找到任何内容。 有什么像模板语言吗?

由于

1 个答案:

答案 0 :(得分:1)

如果不存在所需目标语言的绑定,则路线图(大致)如下:

  • 搜索JIRA,如果您没有发现任何相似内容,请创建一个新的故障单,不久将描述您的计划内容。

  • 在GitHub上执行Apache Thrift code base的分支。虽然我们接受补丁文件,特别是对于更大的更改集,GitHub分支更容易处理。

  • 实施code generator,通常从现有池中选择一个接近您需要的池。已经支持很多语言,你会发现oop,过程和功能样式。如果有疑问,选择哪一个你选择的候选人,请前往下一点

  • 再次选择其中一个existing libraries作为起点,为该特定语言实现Thrift库。由于图书馆在实施的“深度”方面存在很大差异,因此建议仔细研究实施的内容和不实施的内容。

  • 实施标准化的Thrift cross platform test,并确保在针对至少一种其他语言运行时所有测试都成功。这确保了互操作性,并确保代码不仅在与您自己交谈时起作用(=相同语言)。

  • 实施Tutorial code并针对其他语言对其进行测试。如果你做得很好,最后一步比较容易。

  • 你完成了,现在打开拉请求!

请注意,4个实现步骤实际上不是一个线性过程,它更像是一个iteratoin。即使从生成器发出的代码最终是可编译的并且没有吐出任何警告并且似乎运行,当你继续实现库和测试时,你仍然会遇到问题。这是完全正常的和预期的。

除此之外,最好将您的工作发布到邮件列表上并尽早创建JIRA票证(这就是我将其置于列表顶部的原因)。这不仅有助于宣布您即将完成的工作,也是其他人可能正在寻找这些东西的良好起点。幸运的是,您不仅可以获得早期反馈(这总是一件好事),还可以通过实施和/或测试获得一些支持。

<强>备注

如果要实现现有语言的新风格,首选方法是将其添加到现有代码生成器,库等等。有关良好的模型,请查看nodejs实现,或已经有的各种选项适用于Python。 thrift --help给了一个很好的开始。