Adapter模拟消息接口升级

问题的提出
呼叫处理系统( CPS - Call Processing System )需要和接入点( AP-Access Point )进行通信(还有其它一些设备,但本文只关注 AP ),总之 CPS 是一个信息交互的核心。两个设备之间有事先定义好的严格而精确的接口定义,保证两个设备如果在完全遵循接口定义的情况下进行开发,即使在不同项目组,最后也能无缝地整合。为了测试和验证 CPS 系统,又有一个模拟器( Simulator )专门用来模拟和 CPS 交互的外围设备( AP 和其它设备), Simulator 不需要有复杂的消息处理,只需要根据用户的定制或者上下文发送相应的消息即可,所以 Simulator CPS 需要遵守相同的接口义。
 
我在 CPS 项目组,而 Simulator 却是在国外的某个项目组。现在由于业务的需要, CPS AP 之间的消息接口有所改动,所以 CPS Simulator 都需要根据这一接口进行更新。 CPS 的开发工作已经完成,下一步就要进入集成测试。但我们现在只能等待与之遵循相同消息接口的 Simulator 的交付使用。由于根据经验,集成测试过程中可能会遇到很多问题,为了进一步赢取时间,只能从自身的角度看看有没有更好的办法了。
 
解决方案
    CPS AP 之间的消息接口发生了改变,而在 Simulator 这边也没有什么大的突破,所以只能转而考虑,是否可以在 CPS 内部做一些动作。
使用旧的 Simulator ,它只能接收和发送旧的消息,而现在的 CPS 是支持新的消息,所以考虑在新的 CPS 和旧的 Simulator 之间做一个转换,就是把接收到的从 AP 发来的旧的消息转换成新的消息发给 CPS ,而把 CPS 要发给 AP 的新的消息转换成老的消息发给 AP 。这个类似于 Adapter 的功能。
进一步优化的解决方案
     上面的解决方案的问题在于,需要改变现有 CPS 这边的实现代码,特别是消息接收和发送部分。为了减少这种耦合性,最大程度地减少对现有系统的影响,又做了如下的优化:

1.    现以旧的CPS和旧的Simulator做第一步的准备。现有CPS在一个固定的TCP端口侦听AP的连接,原先Simulator会模拟AP去连接CPS侦听的端口,现在另外有个一个与CPSAP都三层网络可达的IP(也可以是Simulator或者CPS上的一个IP),起一个Adapter进程监听与此IPAdapter进程的所在的主机根据IP的选定而确定)的固定侦听端口(与CPS同一个端口),这时的Adapter进程对Simulator来说就已经是CPS了,所以Simulator中的原来配置CPSIP的地方,现在全部用Simulator侦听的那个虚拟IP来代替。Adapter还需要完成的工作是,当Simulator有连接请求时,它需要接受连接,并且同时向CPS发起相同的连接,保证这两个连接的消息是互相转发的,Adapter只是做了一个中转的作用。到此,如果测试结果显示SimulatorCPS之间的通信完全和加入Adapter之前无差异,说明Adapter现在是完完全全实现了中转消息的功能了。

你可能感兴趣的:(职场,Adapter,休闲,消息接口)