python - 自定义Python Twisted协议(protocol): good practices and complexity?

标签 python protocols twisted complexity-theory

我目前正在使用 Twisted 开发 Arduino 类型设备的控制系统,并且遇到一些设计问题

目前情况如下:(提前抱歉,可能有点长)

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

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

这一切让我想到了我的问题:

我不太确定扭曲协议(protocol)的良好实践,但浏览了其中相当多的文档/代码后,似乎它们往往有相对较少的方法

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

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

最佳答案

我会尽力回答一个非常普遍的问题。

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

2) 除了协议(protocol)实例之外,当然还有生成协议(protocol)实例的工厂(对于每个新连接)。例如,所有连接都可用的内容(例如当前连接的客户端数量等)自然就驻留在此处。

3)当然,构建小型类层次结构可能是有意义的,您可以在其中从协议(protocol)派生,实现所有子协议(protocol)共享的内容,然后仅在派生类中再次实现子协议(protocol)细节。

关于python - 自定义Python Twisted协议(protocol): good practices and complexity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7134170/

相关文章:

python - Azure功能不使用可用主机实例

python - shlex 保留双引号吗?

python - 模块未找到错误: No module named 'markdown' when running lektor server

swift - 为什么要扩展你自己的协议(protocol)?

python - 有人能让我理解这段扭曲的代理代码中connectionMade的定义吗?

python - 在 Windows 上的 Python 3.5 上安装 Django-channels 时出错

python - 如何添加到简短的 python 列表?

protocols - 理解ZMODEM协议(protocol)

function - Swift、数学函数和协议(protocol)

python - 扭曲套接字连接未接收到数据