企业IM (或业务系统)web api的json格式设计思考(原创)

本文介绍了一种适用于企业即时通讯(IM)系统中的高效数据同步方案。该方案通过仅同步变动部分而非整体数据来减少带宽消耗,特别适用于组织架构变更等场景。文中详细解释了如何使用动词解析式JSON数据格式(VPJ)来创建、更新和删除数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在企业IM开发中,经常用到和业务系统的数据交换,在中国企业最常见的比如组织架构变更,一般在客户端加密保存了组织架构树(便于快速的查询和树展示),当HR或OA或AD域这些管控企业组织架构的数据发生改变,需要IM服务器推送最新的组织架构,如果推送整个组织架构,数据量非常大(千人以上时),恰当的方式是:仅对变化量通过版本比对进行更新,而不是整体更新。

实际上,不仅仅是组织架构变更的,所有的http web api设计都可以参考这个设计。

取个名字:动词解析式Json数据格式 (Verb Parsing Json,简称VPJ,哈哈)。简要说明:

创建新数据:

{ "create": {
"table1": [ {"verb": value}, {"verb": value}, ...],
"table2": [ {"verb": value}, {"verb": value}, ...], 
}}

例1,添加同事的vcard(根据username):

{ "create": { "ofVCard": ["add": {"username": "zhangsan", "vcard": "<vCard xmlns="vcard-temp"><N><FAMILY/> <GIVEN>张三</GIVEN> </N> <ORG><ORGNAME/> </ORG>......</vCard>"} ] } }  


更新数据:

{ "update": {
"table1": [ {"verb": value}, {"verb": value}, ...],
"table2": [ {"verb": value}, {"verb": value}, ...], 
}}

 

例1,更新电话号码(根据ID):

{ "update": { "ofUser": ["edit": {"id": 10002, "phone": "13710699999"} ] } }  

 

例2,更新电话号码(根据USERNAME):

{ "update": { "ofUser": ["edit": {"username": “wangxin”, "phone": "13710699999"} ] } }  

 

例3,更新一位同事电话号码,同时增加一个新人,同时删除2位同事(根据USERNAME):

{ "update":

{

"ofUser": ["edit": {"username": “wangxin”, "phone": "13710699999"} ]

"ofUser": ["add": {"username": “zhangsan”, "phone": "13710688888", "name": "张三", "email": "zhangsan@163.com"} ]

"ofUser": ["remove": {"username": “lisi”} ]

"ofUser": ["remove": {"username": “wangwu”} ]

}

}  

 

例4,删除一个同事的Vcard(根据USERNAME):

{ "update": { "ofVCard": [{"remove": {"username": zhangsan} }] } }

 

总之,就是一个动词控制api。

客户端实现代码和openfire服务器端插件代码不赘述。

SimpleIM 即时通讯工具 SimpleIM 安装说明 1. 三个目录 本压缩包包括三个目录, 分别为 src (源程序), res (资源), bin (可执行文件)。 2. src src 目录下包括四个目录, 分别为 Client (客户端), Server (服务端), Common (公用代码), Asp (网页)。 客户端 vbp: /src/Client/Client.vbp (目前版本: Beta 4) 服务端 vbp: /src/Server/Server.vbp 将上述两个文件用 Visual Basic 6.0 (Service Pack 6) 打开即可修改、编译。 asp 下包括 register.asp (注册页面), changepwd.asp (修改密码页面), conn.asp 和 md5.vbs。 3. bin bin 下为最终发行所需的二进制文件, 其中 SimpleIM.exe 为客户端程序, Simple IM Server.exe 为服务端程序。 修改源代码以后需要重新编译这两个文件。 MSWINSCK.OCX 为 Microsoft Winsock Control 6.0 (SP6), 为客户端和服务端需要; MSCOMCTL.OCX 为 Microsoft Windows Common Control 6.0 (SP6), 为客户端需要。 说明: 由于 Windows 98 以上版本 Windows 操作系统包含 MSVBVM60.DLL 等 VB6 运行时文件, 本压缩包中省略。 4. res res 下为图片、css、xsl 和数据库文件。 5. 安装 客户端需要准备的文件: SimpleIM.exe MSWINSCK.OCX MSCOMCTL.OCX 直接这将三个文件打包 (加上说明文档) 即可发布。 服务端需要准备的文件: Simple IM Server.exe MSWINSCK.OCX ServerDb.mdb register.asp changepwd.asp conn.asp md5.vbs 首先在服务器上安装 IIS, 将 register.asp, changepwd.asp, conn.asp, md5.vbs 放在一个支持 asp 的目录下, 然后在这个目录下创建一个目录 (目录名需要保密), 将 conn.asp 中 Const SecretDir = "SecretDir" 引号中的 内容改为这个目录的目录名, 然后将 Simple IM Server.exe, MSWINSCK.OCX, ServerDb.mdb 拷贝到这个目录下, 最后建立主页, 即可投入使用。 6. 兼容性 本程序仅在 Microsoft Windows XP SP2 下测试通过, 不保证在非 WinNT 5.x 内核上的兼容性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值