【问题标题】:How can I visualize the type hierarchy of large/deep thrift object/types?如何可视化大型/深度节俭对象/类型的类型层次结构?
【发布时间】:2023-05-29 18:24:02
【问题描述】:

对于我们的许多服务,我们都有大型的 thrift IDL,其中类型可以非常深入。但是,很难可视化各种类型是如何相关/嵌套的。

可视化各种 thrift 对象的对象图的最简单方法是什么?例如,是否有任何东西可以将节俭的 IDL 类型转换为 JSON 漂亮的打印?还是可以显示类型层次结构树形图的 IDE 扩展?

【问题讨论】:

    标签: json treeview visualization thrift


    【解决方案1】:

    您可以尝试使用graphviz 生成器。

     thrift  -gen gv  <idlfile>
    

    这是我不久前用于其他目的的一个示例:

    namespace * Testcase
    
    struct BasicNeeds {
      1 : optional double beerLiters = 1.23
      2 : optional string beerName = "Heineken"
    }
    
    enum Steak {
      Raw = 0,
      Rare = 1,
      Medium = 2,
      WellDone = 3,
      Coal = 4
    }
    
    enum Requirement {
      SpeakMyLanguage = 0,
      FreeCoffee = 1,
      GoodService = 2,
      TakeCreditCards = 3,
      AllYouCanEat = 4
    }
    
    typedef list< Requirement>  FurtherRequirements
    
    struct TableSize {
      1 : optional i32 Width = 20
      2 : optional i32 Length = 40
    }
    
    struct PlaceOrder {
      1 : required BasicNeeds BasicNeeds
      2 : required Steak Kind = Steak.Medium
      3 : optional FurtherRequirements FurtherRequirements
      4 : bool FirstVisit = false
      5 : optional TableSize Table  
    }
    
    union OrderResult {
      1 : bool Success
      2 : bool SorryOutOfSteaks
      3 : bool SorryClosed
      4 : double UnpaidBillFromLastVisit
    }
    
    exception DinerError {
      1 :  string  Msg
    }
    
    service Diner {
      OrderResult PlaceOrder( 1 : PlaceOrder request)   throws ( 1: DinerError rex),
      OrderResult PlaceOrder2( 1 : PlaceOrder request, 2: i32 numberOfSteaks)   throws ( 1: DinerError rex),
      PlaceOrder TryReversed( 1 : OrderResult request)
    }
    

    【讨论】:

      最近更新 更多