SDDS(Stream Data Dynamic Structure)
流数据动态结构处理包
——应用层二进制通讯协议编码与解码的通用组件
——格式化的二进制流的编码与解码的通用组件。
}
===========
为什么SDDS?
===========
当我们使用WorkerMan或者Swoole编写
基于TCP或UDP的二进制通讯应用时,WorkerMan或者Swoole仅解决了二进制数据包的收发。通常,针对不同的应用层协议,比如,JT808,ModBus等,均需要编写不同的数据包编码与解码程序。并且,对于这些程序,由于算法的复杂和协议的多样性,程序几乎是没有可重用性的。
当然,你也可以使用google protocol Buffer来实现编码与解码,但这一做法却改变了数据包的结构,并且,一些特殊硬件或协议也不方便使用protocol Buffer。
不过,现在有了SDDS,(Stream Data Dynamic Structure),使用SDDS,你只要使用JSON定义一下Scheme,额外增加一些扩展函数,那么,应用层协议的编码与解码程序就完成了。
由此可见,SDDS解决了应用层通讯协议的组件化与可重用性的问题。不仅提升了开发速度,同时也大大提升了程序的可重用性,可扩展性和可维护性。
简单来说,SDDS简化了Socket通讯应用开发中最复杂的一层,即应用协议层编码与解码程序的开发。
使用SDDS,你甚致可以在一套应用中支持多套应用层协议。
使用SDDS,将会大大提升php针对不同二进制通讯应用协议的通讯应用开发速度。
======================
SDDS与protobuf,kaitai的不同
======================
并且,与protocol Buffer不一样的是,Scheme编写完成后即可立即使用。不需要编译,同时,绝不改变通讯协议规定的传输结构。所以,可以广泛用于IoT,JT808,ModBus,zigbee,OBD II等各种二进制应用协议。
过去,不同的应用层协议需要有不同的编解码程序。现在,使用SDDS,所有通用的编解码均由SDDS完成了,所有不同的只是各自有不同的基于JSON定义的Scheme.
SDDS也可用于二进制格式文件的读取,比如,PDF,MP3等。与同类的开源Kaitai不同的是,SDDS一样不需要编译,并且,由于SDDS使用的是动态数据结构定义方式,所以,任何一种数据的处理的流程均可以通过Scheme定义。使用SDDS,只要简单定义Scheme和相应扩展函数即可,远比kaitai方便。
所以,SDDS不只是通用的应用层二进制编码与解码程序,同时也是用于格式化的二进制流数据编码与解码的简单易用的组件。
总而言之,SDDS作为二进制通讯应用协议层快速开发和格式化二进制读写的快速开发解决方案,具有以下优势:
1, SDDS可以广泛应用于各类基于应用层二进制通讯协议的Socket服务器端应用的开发,包括但不限于工业自动化控制,物联网等各种应用协议,比如,modbus,zigbee,jt808等等。
2, 简单易用,开发效率明显提升。
3, 动态结构,编码解码流程完全由Scheme定义。
4, 无需编译。Scheme即写即用。方便程序修改与扩展。
5, SDDS不仅可以用于通讯应用,同时也可用于其它二进制格式流数据的读写。
关于SDDS详细介绍,参见:
https://github.com/byteferry/sdds
SDDS的php组件,参见:
https://github.com/byteferry/sdds_php
相关推荐
Socket是一个网络编程接口,实现于网络应用层,Windows Socket包括了一套系统组件,充分利用了Microsoft Windows 消息驱动的特点。Socket规范1.1版是在1993年1月发行的,并广泛用于此后出现的Windows9x操作系统中。...
特性: 事件驱动、异步非阻塞、多进程单...beyod不仅是一个网络底层开发框架,更是一个网络应用开发框架,可快速实现业务功能。 易于扩展,beyod使用composer/psr标准结构,可以很容易使用第三方PHP框架实现业务功能。
此案例采用modbus-tcp协议与设备进行通信,且分别应用Socket与第三方组件NModbus两种方式进行通信。
Socket也具有一个类似于打开文件的函数调用Socket(),该函数返 回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现 的。 常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式...
应粉丝要求,应用之前的通信协议和socket组件,做了一个简单的通信demo。socket模块已经在hololens模拟器上测试通过、完全兼容。压缩包提供的服务器是as3写的,如果需要源代码可以联系我索取。我觉得懂as3的已经不多...
6.5.2 TQuery组件 6.5.3 TStoredProc过程 6.6 数据感知组件 6.7 事务 第7章 多层数据库应用程序 7.1 一个简单的多层应用系统 7.1.1 服务器端应用程序的建立 7.1.2 客户端应用程序的建立 7.2 多层应用系统处理数据的...
Workerman 本身是一个PHP多进程服务器框架,具有 PHP 进程管理以及 socket 通信的模块,所以不依赖 php-fpm、nginx 或者 apache 等这些容器便可以独立运行。 特性 workerman 诸多的不同寻常的特性,使得PHP开发者...
SuperSocket 是一个轻量级, 跨平台而且可扩展的 .Net/Mono Socket 服务器程序框架。你无须了解如何使用 Socket, 如何维护 Socket 连接和 Socket 如何工作,但是你却可以使用 SuperSocket 很容易的开发出一款 Socket ...
1.1.2 应用层协议 1.1.3 传输层协议 1.1.4 网络层协议 1.1.5 RFC和标准简单服务 1.2 TCP/IP基本概念 1.2.1 IP地址 1.2.2 地址解析 1.2.3 域名系统 1.2.4 数据包的封装和分用 1.2.5 端口号 1.3 网络编程...
另一种是针对client/server(客户端/服务器)模式的应用以及实现某些特殊的协议的应用,它的通讯过程是基于TCP/IP协议中传输层接口socket实现的。本文想简单的介绍一下Socket编程的Java实现方法。 客户基于服务器...
PRTX SDK 就是给您一个专业的 IM 通讯架构,您无需要考虑 IM 的实现细节、通讯和服务器的性能部分,只需要考虑您自己的业务系统并且通过简单易用接口把 PRTX SDK 融合到您自己的系统中去。在需要发送消息时通过消息...
smart-http 是一款可编程的 Http 应用微内核,基于smart-socket实现的轻量级http服务器,方便用户根据自身需求进行 Server 或 Client 的应用开发。支持GET、POST的 HTTP 请求。提供了 URL 路由组件,可以快速搭建...
7.1 一个简单的多层应用系统 7.1.1 服务器端应用程序的建立 7.1.2 客户端应用程序的建立 7.2 多层应用系统处理数据的原理 7.2.1 多层应用系统的结构 7.2.2 存取数据的运作原理 7.2.3 更新数据的运作原理 7.3...
3-5名学员组成一个项目小组,项目自选,项目小组提交项目报告,经审核同意后拨付项目经费,在项目指导教师指导下项目实施,项目完成应有成型产品,组织召开项目完成报告会,项目小组提交项目完成报告书,项目结束。
" " "应用服务器提供商需作为JavaEE6标准制定成员,并具 " " "有专家参与下一个版本(JSR316)的标准制定,并可提" " "供网址查询。 " "集群与可用性要"必须支持通过Apache、IIS实现集群、负载均衡和系统 " "求 ...
在Java中Socket可以理解为客户端或者服务器端的一个特殊的对象,这个对象有两个关键的方法,一个是getInputStream方法,另一个是getOutputStream方法。getInputStream方法可以得到一个输入流,客户端的Socket对象上...
在数据报实现C/S通信程序时 ,无论在客户端还是服务器端,都要首先建立一个DatagramSoeket对象,用来表示数据 报通信的端点,应用程序通过Socket接收或发送数据报。DatagramPaeket则用来表示一 个数据报,它是传输...
换句话说,Netty是一个NIO框架,使用它可以简单快速地开发网络应用程序,比如客户端和服务端的协议。Netty大大简化了网络程序的开发过程比如TCP和UDP的 Socket的开发。 "快速和简单"并不意味着应用程序会有难维护...
利用C 语言的高效, 稳定和灵活性,创建一个通用的通讯平台; 服务器端以插件配置方式动态加入功能组件; 客户端以XML文本描述方式, 调用服务端功能组件的函数; 服务端也同样以XML文本描述调用返回结果, 类似于XML-PRC...
利用C 语言的高效, 稳定和灵活性,创建一个通用的通讯平台; 服务器端以插件配置方式动态加入功能组件; 客户端以XML文本描述方式, 调用服务端功能组件的函数; 服务端也同样以XML文本描述调用返回结果, 类似于XML-PRC...