the*_*row 11 embedded parsing communication data-formats
我很难选择我的服务器和终端与之通信的格式.
我正在考虑:
我的标准从最重要到最不重要的顺序排列:
编辑澄清:
关键因素是:
在我的经验中:
一个简单的文本协议(将自己归类为 DSL),其接口为
string RunCommand(string commandAndParams)
// e.g. RunCommand("version") returns "1.23"
Run Code Online (Sandbox Code Playgroud)
使许多方面变得更容易:调试、日志记录和跟踪、协议扩展等。为设备提供一个简单的终端/控制台对于跟踪问题、运行测试等来说是非常宝贵的。
让我们详细讨论限制,作为其他格式的参考点:
我只会在设备需要时使用二进制协议,设备处理能力非常低(例如,具有 256 字节 RAM 的 USB 控制器),或者您的带宽受到严重限制。我使用过的大多数协议都使用它,这很痛苦。
Google protBuf是一种使二进制协议更容易的方法。如果您可以在两端运行库,并且有足够的自由来定义格式,那么这是一个不错的选择。
CSV是一种将大量数据打包成易于解析的格式的方法,因此它是文本格式的扩展。但是,它的结构非常有限。只有当您知道您的数据适合时,我才会使用它。
XML/YAML/...我只会在处理能力不是问题、带宽不是问题或者您可以即时压缩并且数据具有非常复杂的结构时使用。JSON 在开销和解析器要求上似乎更轻一些,可能是一个很好的折衷方案。