背景

需要将现成的CLI转换为web服务的HTTP接口.

这个我记得之前看到哪篇文章推荐过, 但是一时想不起来了

想了想关键词

小结

所以根据上面的思路来看

流程

  • 初始化
    • 解析配置文件, 其中包含CLI或函数对应的API路由
  • decoder解析http协议
  • dispatch根据路由转发, 路由注册
  • 进入函数或传入命令参数进行执行
    • 可能有前置处理参数逻辑, 一般定制性需要强一些
    • 后置输出格式处理逻辑等
  • encoder协议拼装返回

思路

  • 针对支持运行时元编程能力的语言(如python, go), 和我实现思路基本一致, 编写一套配置或叫做DSL, 运行时加载然后动态生成函数等.
  • 针对不具有上述能力的语言, 有两种思路
    • 参数传入, 核心调度逻辑的函数基本只有一个
      • 如果是CLI, 则作为参数传入, 有一个统一system调用的函数封装
        • 如果是前置和后置逻辑需要用函数处理, 则像下面一样用字符串找到符号表里的函数指针.
      • 如果是函数, 我想的就是通过动态库的dlysm或者libeffi来根据配置中填写的函数名, 去进行调度.
    • 编写一套DSL, 在进入编译前, 根据编写的DSL生成一套代码, 这样就支持各式各样的函数了, 就是定制性维护可能代码量膨胀的较快? gsoap和soaplib应该是这套思路吧, 好像有点像是10年前的思路, 看snmp代码的时候也是这种思路, 从mib生成代码.
      • 这个的实现方式应该就多种多样了.