优先使用工具来减轻编程负担

 

优先使用工具来减轻编程负担



  在UNIX圣经《UNIX编程艺术》一书 中,第12页第4段落写着:“优先使用工具而不是拙劣的的帮助来减轻编程的负担”——UNIX尊者:Doug McIlroy的箴言。


  我们以前的一个项目中。确好用上了该原则。

  我们做的是一个代理服务器,代理服务器顾名思义,就是讲数据从移动自助终端客户端中转到移动BOSS服务器。移动BOSS服务器定义了一套很好的协议接口,非常的KISS。是华为公司设计的。

  PS:该协议接口非常的简洁,非常有UNIX的传统,从而看来华为公司编写该BOSS服务器的程序员的水准之高。赞ing。

  我们的代理服务器,并不需要处理任何业务只需要定义和缴费终端的协议,然后将协议翻译成为BOSS协议的数据包,然后提交给BOSS服务器。然后再接受BOSS服务器的返回包,再返回给缴费终端。

  缴费给代理服务器发送的数据包中不仅仅有提交到BOSS服务器的数据,还有代理服务器和终端特有的数据。我们使用了XML来描述终端和代理服务器的协议。然后在数据库中配置协议的协议字段类型,协议字段长度,协议字段名称等信息。

  当终端发送过来的协议包的时候,代理服务器查询XML协议包描述文件。取出终端协议各个字段,然后参照数据库中协议字段配置,数据打包成为BOSS协议字段,发送给BOSS。然后接受BOSS服务器的返回包。参考数据库返回包的协议格式进行解包。

  我们每增加一个BOSS命令字的时候,代理器都需要增加相应的XML配置和数据库字段。

  在开发和测试阶段。代理器连接一个我们自己开发BOSS模拟器和终端进行联调。和终端联调稳定后,然后终端在连接真实的BOSS服务器去调试。

  以前的BOSS模拟器非常垃圾。因为这毕竟就是一个模拟器而已,只是根据终端发送的命令字机械的返回给终端一些数据。每次增加新的命令字的时候,都要修改模拟器的代码,然后进行编译。然后进行配置文件的配置。总体说来,我们后台每增加一个命令字都需要进

行这几个步骤:

  1:在代理器中处理该BOSS命令字的处理入口

  2:定义和终端的协议接口

  3:定义和BOSS服务转发的数据库字段协议的配置

  4:修改BOSS模拟器,增加对该命令字的返回处理以便和终端进行联调

  5:增加终端模拟测试工具的配置文件

  6:新增业务许可配置,增加每台终端的合法性配置

  每增加一个命令字,把这些步骤做不下来,不超过1个小时。但是,如果增加到10个命令字,20个,几十个命令字的时候,这就会变成枯燥的体力活。因为每个命令的如上配置都有规律可循,大同小异。

  当我们的业务有一个需求,需要增加近20个这样的命令字接口并且由我来开发配置的时候,我有点叫苦不迭了。因为这非常枯燥。

  “因为不开发一个工具来处理这些枯燥规律的事情呢,这非常符合UNIX传统”。

  花了一天的时间,我开发出了一个名字为XML2的接口处理工具。

  只要如此的启动:

  ./XML2 app50032.ini

  app50032.ini是该协议的配置信息,我只要描述该协议的名称,该协议的各个字段的顺序,各个字段的内容。

  就会立刻生成名为:sql.cfg,xml.cfg,test.cfg,trans.cfg,50032.pl

  sql.cfg文件是该业务的数据库字段协议配置文件

  xml.cfg文件是生成该业务和终端的协议接口

  test.cfg文件是该业务的模拟终端测试工具配置文件

  trans.cfg文件是该业务的业务许可配置,每台终端的合法性配置

  50032.pl文件是该业务的BOSS模拟器的业务脚本

  50032.pl文件是给BOSS模拟器用,嗯,这还需要对BOSS模拟器进行修改,以便能进行perl的扩展。

  一天的时间,干完这些活儿之后,快下班的时候,我随便写了几个命令字的app.ini配置,XML2工具立刻生成以上文件。经过测试,一切正确。

  XML2工具万岁,UNIX万岁!

  PS:XML2工具,使用perl进行编写的.

                             

write in 2009-12-2

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值