我有一个用ASP.NET编写的云/ Web服务,它将与我正在使用的许多嵌入式设备进行通信。我们的嵌入式设备是内置的,它们运行的是骨干操作系统,我们的大部分代码都是用C语言编写的。
要在企业环境和防火墙中工作,通过Web服务和嵌入式设备之间的HTTP进行通信(必要的要求)。现在,我正在尝试决定两者之间的通信格式。我能想到的前两位是:
JSON :Web服务和嵌入式设备通过JSON进行通信。这简化了Web服务的处理,因为我可以创建与JSON格式匹配的Model,并且控制器可以轻松地将此数据转换到类中。它易于访问Web服务,JSON非常灵活:可以轻松地向任何消息添加新字段和数据。缺点是嵌入式设备上的JSON解析看起来很昂贵,并且由于您在有效负载中拼出每个密钥名称及其数据,因此传输的数据(字节)数量可能很高。
Binary:Structs&转换:或者,我想我可以为Web服务和嵌入式设备之间的消息创建一个定义良好的结构,传递投射到结构中的二进制数据。好处是,双方都可以相对容易地进行处理,特别是在嵌入式方面,内存的运行比处理JSON要便宜。其缺点是灵活性较差。更改数据,在部署后添加字段等更加困难。当然,您也必须小心使用endianess。
我想知道是否有人在设计这样的东西时有过类似的经历。是否更好地使用JSON或类似二进制数据进行投射。