【问题标题】:Best practices: What's the best way to treat byte protocol最佳实践:处理字节协议的最佳方法是什么
【发布时间】:2015-05-06 11:29:46
【问题描述】:

我与具有自己协议的设备进行串行通信,换句话说,它具有一些具有某些含义的字节数组(帧)。因此,我一直在使用映射中的许多默认帧来处理它,以将数据发送到设备和一种状态机,一个用于从设备接收数据的大型 switch-case 块。

我知道这个问题是主观的,但我真的很想获得实施这种关系的最佳实践。也许有设计模式可以做同样的事情。

【问题讨论】:

  • 状态机是 M2M 通信 (IMHO) 中的首选方法,如果机器不会变得太大,switch 语句是一种可行的方法。如果它确实或需要更大的灵活性,您可能想要使用可配置的自动机框架或自己编写一个。但是您的问题非常广泛,我认为应该重新措辞并提供一些来源的支持,否则我认为它将被关闭为“太宽泛”。它将吸引基于意见的答案。
  • 谢谢@thst。你有一些关于自动机框架的链接和例子吗?我知道它非常广泛,但我真的不知道如何以另一种方式问这个问题,而且它已经让我很担心很长时间了。此外,也没有太多可以搜索的资源。
  • 我找到了状态模式。当我有复杂计算的状态时,这似乎是一个很好的实现。
  • 你可以在这里找到一些实现stackoverflow.com/questions/10875317/…
  • 重新表述这个问题的一个好方法是展示你的实现的一个有代表性的部分,例如字节读取切换循环。然后其他人可能会评论您的实施并提出不同的方法。

标签: java oop design-patterns


【解决方案1】:

这完全取决于它的复杂程度。如果它像 3270 一样多毛,你当然需要一个状态机。如果它是一个简单的字节协议,你不需要比DataInputStream. 更复杂的东西。这里没有足够的信息来说明哪个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多