2014-10-31 70 views

回答

1

如果不存在綁定所需的目標語言,路線圖(大致)如下:

  • 搜索JIRA,如果你什麼也沒找到類似的,創建一個新的機票,很快就會描述你正在計劃的事情。

  • 在GitHub上做一個Apache Thrift code base的分支。儘管我們接受補丁文件,特別是對於更大的更改集,GitHub分支更容易處理。

  • 執行code generator,通常是從現有池中選取一個接近您所需的池。已經有很多支持的語言,並且您會發現oop,程序和功能樣式。如果有疑問,可以選擇找到的兩個或三個候選人中的哪一個,前往下一個點

  • 以該特定語言實現Thrift庫,同樣選擇existing libraries之一作爲起點。由於這些庫在實現「深度」方面差異很大,因此建議仔細查看實現的內容,以及不實現的內容。

  • 執行標準化並確保所有測試都能夠在針對至少一種其他語言運行時成功。這確保了互操作性並確保代碼不僅在與自己交談時(=相同的語言)才能工作。

  • 執行Tutorial code並對其他語言進行測試。如果你做得很好,最後一步比較容易。

  • 你完成了,現在打開拉請求!

請注意,4個實現步驟並不是一個真正的線性過程,它更像一種迭代。即使最終產生的代碼是可編譯的,並且不會吐出任何警告並似乎運行,但在繼續執行庫和測試時仍然會遇到問題。這是完全正常的和預期的。

除此之外,將您的工作發佈在郵件列表中並提前創建JIRA票據是個好主意(這就是爲什麼我把它放在列表頂部)。這不僅是爲了宣佈你即將開展的工作的目的,對於其他可能只是在尋找那些東西的人來說,這也是一個很好的起點。運氣好的話,你不但可以獲得早期的反饋(這總是一件好事),還可以通過實施和/或測試提供一些支持。

備註

如果你想實現現有語言的新口味,首選的方法是將它添加到現有的代碼生成器,庫和因此,對於一個很好的模式看的NodeJS實現,或Python已經存在的各種選項。 thrift --help給出了一個很好的開始。

+1

我用它做了一個文檔:https://thrift.apache.org/docs/HowToNewLanguage – JensG 2014-10-31 14:07:38

+0

很好的寫你的文檔。感謝您的回答。我所針對的語言是一種正確的語言。但是當我意識到這一點時,我肯定會回饋。 @JensG是否有每種語言必須實現的Thrift協議的最小特徵集?例如我的語言不支持結構。我可以將它們排除在外嗎?我猜不是;)我將不得不使用訪問函數來實現它們嗎? – crushervx 2014-11-02 23:11:44

+0

您將需要服務調用的結構。技術上args和retvals都是通過電線作爲結構轉移的。 – JensG 2014-11-03 01:57:10