最近一段时间的工作,很多都是和各系统间串联有关的,其间有两个问题很值关注,如何调用其它系统的接口和如何设计供其它系统调用的接口。
如何调用其它系统的接口?
因为是其它系统的接口,直接调用就行了,没有什么啊,其实不然,下面是我总结的一些经验,还是很有用的。
1.不要程序各个地方直接使用其它的系统的接口,最好是写一个类来封装其它系统的接口,如果其它系统的接口很多,可以专门建一个项目来管理类,这样当接口发生变化时(如接口名,接口方式),只需要替换该项目的DLL就可以了,而程序的其它地方都可以不用改,切忌在程序的各个地方直接调用其它系统的接口
2.对于调用会产生数据交易的其它系统接口,一定要写Log,这对将来数据出错时,查找问题的根源很必要,特别是对方系统的接口没有写log时,一旦出现数据问题,往往会不知从何查起,是我们给的数据有问题,还是对方系统处理我们给的数据有问题?在最近的一个项目中,因为我们产生数据的逻辑很复杂,而对方接口收到我们产生的数据后,也会做一个很复杂数据交易动作,在系统上线初期,出现了很多莫名其秒的数据,而我们正是通过在调用对方接口时的写log数据,很快查出一些是我们生成的数据有问题,一些是对方处理数据有问题
如何设计接口?
1.一般来说,公布给其它的系统用接口,都是稳定的,较少变动的,所以做足需求,能考虑到多种因素和未来可能发生的因素是前提,这样能尽可能减少接口的变动
2.接口的使用的类型变量尽量通用,特别是对使用此接口的用户一无所知情况下,对方可能是JAVA,也可能是VB6,也可能是C#,不要使用某种编程语言的特定类型,我认为比较好的是,参数和返回值都使用string类型,这样基本上的编程语言都能支持,然后参数和返回都使用XML来定义。
公布接口的时候一同公布接口定义文档,最好加上XDL文档。
3.对接口接收过来的数据,最好进行数据效验,因为你不能保证其它系统会传给你完全符合标准的数据。
4.对数据校验不通过的和执行失败的,最好能有清淅明了的提示返回给调用方
5.对于产生交易数据的接口,最好写log,记录调用方传过来的数据,方便将来查数,不能指望所有的调用方都会写log