【问题标题】:Custom Python Twisted protocol : good practices and complexity?自定义 Python Twisted 协议:良好实践和复杂性?
【发布时间】:2011-10-31 08:11:15
【问题描述】:

我目前正在使用 Twisted 为 Arduino 类型设备开发控制系统,并且有一点设计问题

这是目前的情况:(提前抱歉,可能有点长)

  1. 为了处理不同类型的设备(每个都有不同的固件和通信协议),我设计了一个“驱动程序”系统:
    • 每个驱动程序由以下组成:
      • “硬件处理程序类”:对 Twsited 的 serial 类的封装,并添加了一些辅助方法
      • 自定义串行协议

2- 在为 Reprap 3d 打印机(也基于 arduino,也使用串行连接)实现驱动程序时,使用相当特定的协议(即 enqueue 点、set 温度等),我开始怀疑我是否将处理这些功能的方法(每个都有特定的命令)放在正确的位置..

这一切都引出了我的问题:

就扭曲协议而言,我不太确定良好实践,但查看了其中不少的文档/代码后,似乎它们的方法相对较少

  • 总是这样吗?协议是否应该仅用于非常低级的功能以及输入/输出格式和通信?
  • 我要管理的某些设备具有非常明确定义的协议(Makerbot 等),我是否应该将一般协议规范视为与我正在创建的实际 Twisted 协议类不同的东西?

非常欢迎任何建议、提示和指点! 提前致谢。

【问题讨论】:

    标签: python protocols twisted complexity-theory


    【解决方案1】:

    我会尽力回答一个非常笼统的问题。

    1) 构成 Twisted 协议的接口只有 4 个方法: http://twistedmatrix.com/documents/11.0.0/api/twisted.internet.interfaces.IProtocol.html 所以这将是你的协议实现和 Twisted 之间的所有交互发生的地方。

    2) 除了协议实例之外,当然还有生产协议实例的工厂(对于每个新连接)。因此,例如,应该对所有连接都可用的东西(例如,当前连接的客户端数量等)自然地驻留在那里。

    3) 当然,构建小类层次结构可能是有意义的,您从协议派生,实现所有子协议共享的东西,然后只在派生类中再次实现子协议细节。

    【讨论】:

    • 感谢您的回复,oberstet,它实际上有很大帮助! - 3)特别令人感兴趣,因为您提到的链接中的 websocket.WebSocketProtocol 似乎走的路线类似于我正在采取的路线(协议,协议层次结构的许多特定于域的添加) ,所以我将研究高速公路协议以获取更多信息。 - 2) 仅部分适用于我的情况:我正在编写的协议适用于 Serial 连接,在扭曲(无工厂等)中处理方式不同替换长轮询!谢谢!
    猜你喜欢
    • 2012-12-15
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 2012-08-10
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多