接口详细设计文档资料.doc
《接口详细设计文档资料.doc》由会员分享,可在线阅读,更多相关《接口详细设计文档资料.doc(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、#+接口详细设计文档作者:唐为(为哥)审核:赵锟日期:2005-5-27接口详细设计文档11编写目的32名词解释33组件分布图44程序结构54.1接入处理线程类图54.2接收线程类图64.3启动控制图65程序设计说明75.1对原系统的改动75.2ThreadInSvcProcessor 接入处理器85.2.1类图85.2.2时序图95.2.3流程图95.2.4ThreadInSvcProcessor类说明115.3PatternNewSyncAsyncInnerDir 同异步向内处理模式165.3.1类图165.3.2描述175.3.3流程图175.3.4类说明195.4ThreadReply
2、SvcProcessor 异步应答返回处理器245.4.1类图245.4.2类说明245.5ClientInfo 客户端连接数据335.5.1类图335.5.2类描述335.6ClientInfoTable 客户端连接数据表345.6.1类图345.6.2类描述345.7ClientInfoTableMonitor 客户端连接数据表监控程序385.7.1类图385.7.2类说明385.8FrontMain 主控程序405.8.1类间关系405.8.2流程图415.8.3类说明425.9问题441 编写目的预期读者:对接口行为和目的有一定了解的人背景说明n 软件系统名称:接口前端接入服务器n 描
3、述 接收不同商家的接入,接收数据转发给主机服务器,并同步/异步将返回数据发给接入商家的行为2 名词解释n ChannelBase渠道,通信基类,提供数据收发和释放的方法接口用子类实现来封装了不同通信方式 目前有TCP短连接接入, 从ACE Message_Queue中读取(IPC MessageQueue- ACE_Message_Queue)n Trade* trade商家对象,代表的其实是针对该商家处理方法的集合将接入数据的商家称为服务商家而将请求面向的商家称为主机商家,主机商家负责同步/异步返回交易的应答数据给接口平台n 而接口(数据交换)平台是在两者之间的交换平台n 渠道工厂:把接入数
4、据的渠道工厂统一定为服务渠道工厂,发送数据的渠道工厂统一定为主机通道工厂服务商家接口平台主机商家查不到,丢弃返回应答线程组ATM接入服务器ATM连接队列TCP渠道IPC消息队列渠道commserverIPC消息队列注各种服务渠道和主机通道抽象类都是相同的基类ChannelBase,只是作用不同渠道工厂生成各种渠道IPC消息队列commserver银联接入服务渠道抽象代表各种接入服务渠道接出服务渠道抽象TCP渠道IPC消息队列渠道发送请求线程组后台服务器连接监视器IPC消息队列通知清除超时间连接记录表接收线程接收IPC消息总控接入主机通道抽象IPC消息队列渠道3 组件分布图ATM4 程序结构4.
5、1 接入处理线程类图PatternNewSyncAsyncInnerDir是ProcessPattern的一个子类,实现发送主机服务器并判断同/异步返回同步直接返回给接入商家异步只做相应记录ProcessPattern是后续处理的全部流程抽象类子类实现对应不同流程ThreadInSvcProcessor是接入处理线程的主流程收数,接包无误后将处理控制权交给ProcessPattern4.2 接收线程类图4.3 启动控制图5 程序设计说明5.1 对原系统的改动n 改变原有商家Trade类,不存放渠道对象在商家类中,商家类只执行商家处理,不负责渠道的管理n 改动原有的系统中所有模式的处理,模式处理
6、必须对渠道的释放负责n 修改MidHstChannel,添加后台服务需要的个FML字段,这两个字段是:FML域名描述S_INTERF_NO接口标识号,整数。系统中接收异步响应程序的唯一编号。用于标识请求的来源,异步应答根据这个号码分发给具体的接口程序。S_TX_CTRL_ATTR交易控制属性,字符串。接口都填0,表示这是正常的交易请求。5.2 ThreadInSvcProcessor接入处理器5.2.1 类图5.2.2 时序图预先说明:n ChannelBase渠道通信基类,提供数据收发和释放的方法接口用子类实现来封装了不同通信方式。目前有 TCP短连接接入。从ACE Message_Queu
7、e中读取(IPC MessageQueue- ACE_Message_Queue)n Trade* trade商家:代表的其实是针对该商家处理方法的集合5.2.3 流程图服务商家商家渠道工厂GetChannel商家通过渠道收取数据商家的输入处理渠道没取到退出?超时?安全出错?请求:执行安全出错模式PatternErrorSyncInner处理模式请求/应答YesNo执行识别出的模式处理Yes同异步模式PatternNewSyncASyncInnerDirPatternASyncInnerDir应答丢弃5.2.4 ThreadInSvcProcessor类说明5.2.4.1 功能收取用不同渠道接
8、入的外部商家的请求识别,解包执行处理的模式具体的流程在模式中控制,并不做控制模式可能有3种:1. 无返回:发送后台,不接收应答对应模式PatternASyncInnerDir,需要修改原来的相关程序,在本文档中并不涉及2. 有返回,根据返回的应答判断是同步返回还是异步返回如果接收的应答表明是同步返回,按正常模式返回如果接收的应答表明是异步返回,按异步模式处理对应模式PatternNewSyncASyncInnerDirThreadInSvcProcessor后续的ProcessPattern 应该是PatternNewSyncASyncInnerDir.ThreadInSvcProcessor
9、只负责接入后调用模式,并处理异常情况3. 安全异常情况的模式下,调用模式PatternErrorSyncInner来处理,必须限制:主要的改动是渠道的释放由模式来管理涉及模式有 PatternASyncInnerDir , PatternNewSyncASyncInnerDir , PatternErrorSyncInner (可能不全面)5.2.4.2 程序描述ThreadInSvcProcessorThreadInSvcProcessor(Trade* ptrade , SvcChannelFactory* pfactory, bool*_bexit)功能:构造函数性能:输人项:Trade
10、* trade接入数据处理的商家类SvcChannelFactory* pfactory接入数据渠道工厂bool* exit退出标志输出项:注释:5.2.4.3 程序描述SvcRunvoid SvcRun()功能:主控流程输人项:无输出项:无流程:服务商家在开始已经生成,生存周期里一直存在一个DataBus对象(数据总线),每线程一个DataBus对象。在生存周期里一直存在DataBus对象初始化循环处理SINT32 ret = a_process_loop (Trade* ptrade , SvcChannelFactory* pfactory,DataBus* pDataBus );if(
11、bool* exit = true )释放渠道跳出循环为下一次使用清空DataBus对象收尾处理,释放recv_trade5.2.4.4 程序描述a_process_loopSINT32 a_process_loop (Trade* ptrade , SvcChannelFactory* pfactory,DataBus* pDataBus )功能:一次交易的处理输人项:Trade* pTrade , 接收数据的服务商家服务渠道SvcChannelFactory* pFactory,服务商家接收数据的主机通道SvcChannelFactory * pFactory 服务商家渠道的生成工厂。Da
12、taBus* pDataBus预先创建的数据总线,不需要每次重建输出项:S_OK成功完成其他出错信息流程:依次执行GetChannel生成接入渠道ChannelBase* (根据商家生成一个ChannelBase的子类)除非出错,整个流程不释放该ChannelBase , 委托给Patten负责释放TradeRecvData 服务商家接收数据TradeInProcess服务商家进入处理(最主要一项功能就是接口识别)If( TradeInProcess 成功 & 安全函数出错 ) /安全函数一般是mac校验失败根据p_databus- pack_type 对请求和应答作2种不同的处理if( pa
13、ck_type 是请求 ) 执行 RequestSecureFailedProcess 函数调用else /应答报文结果是应答 直接丢弃,返回成功不管结果如何都跳到异常处理,但是返回值可能因SecureFailedProcess的执行结果而不同else否则生成Patern对象生成对方商家hst_trade生成模式对象Pattern,将服务商家和对方商家传入执行ExecPattern执行具体的模式处理,将渠道委托给Patten负责释放异常处理:记录出错信息和时间当异常发生在ExecPattern之外,释放渠道结束处理:(无论异常与否都执行):释放对方商家 st_trade释放模式对象Patter
14、n注释:为了便于单元测试,从SvcRun中分离出该方法也可以在SvcRun中实现上述的全部逻辑5.2.4.5 程序描述GetChannelSINT32 GetChannel(SvcChannelFactory* factory, ChannelBase* ACE_Time_Value* time_val )功能:调用svc_factory生成服务渠道性能:输人项:SvcChannelFactory*svc_factory渠道工厂ACE_Time_Value*time_val超时时间这个超时目前是一个固定值,和接收数据和发送数据的超时无直接联系ChannelBase* !=NULL未取得=NUL
15、L取得输出项:返回值注释:出错信息在该方法中输出流程中只判断是否取得,没有取得则应该跳到开头进入下一次循环测试:对所有的可能生成的ChannelBase都进行一次测试5.2.4.6 程序描述TradeRecvDataSINT32 TradeRecvData(Trade* p_recv_trade , ChannelBase* p_chnbase , DataBus* p_databus , ACE_Time_Value* time_out )功能:商家通过渠道接收数据放入p_databus中输人项:ChannelBase* p_chnbase收取的渠道Trade* p_recv_trade接收
16、的商家DataBus* p_databus存放数据的DataBusACE_Time_Value* time_out超时时间输出项:0 成功-1读取失败或者超时注释:主流程不记录详细出错信息5.2.4.7 程序描述TradeInProcessSINT32 TradeInProcess(Trade* p_trade , DataBus* p_databus )功能:执行商家的入口处理(识别,解包。)p_databus的_data_buff 和 _len 字段分别表示数据指针和长度输入处理后将数据填入 p_databus 的 _var_pool 和 _var_reco_pool(识别数据)中输人项:
17、Trade* p_ trade接收服务商家DataBus* p_databus存放数据的DataBus输出项:0成功-1读取失败或者超时注释:没有超时限制,要控制短时间内完成5.2.4.8 程序描述RequestSecureFailedProcessSINT32 RequestSecureFailedProcess(DataBus* p_databus , Trade* p_trade , ChannelBase* in_svc_channel)功能:对输入是请求报文的安全类函数失败后的处理(输入是应答报文的就直接丢弃)输人项:DataBus* p_databus数据Trade* p_trad
18、e输入服务商家ChannelBase* in_svc_channel输入服务的渠道输出项:S_OK应答保报文,不加理会INTIDENERROR( SECUFAILED )请求报文,执行安全异常处理模式成功其他。请求报文,执行安全异常处理模式中出错注释:无论SecureFailedProcess 的执行结果如何都不继续执行后面的操作5.2.4.9 程序描述ExecPatternSINT32 ExecPattern(ProcessPattern * pattern , DataBus* p_databus , ChannelBase* p_channel)功能:执行处理模式,全部处理交给patte
19、rn输人项:ProcessPattern* pattern处理模式DataBus* p_databus存放数据的数据总线ChannelBase* channel输入服务渠道,交给Pattern管理释放输出项:S_OK成功其他失败注释: ChannelBase* 输入渠道,如果Pattern没有生成等错误,还是主控来释放p_channel执行pattern-Process 后就不管了可能设置一个标志位来表示是否执行了Pattern,执行过最后就不用释放channel了(是否可以这样?SINT32 ExecPattern(ProcessPattern * pattern , DataBus* p_
20、databus , ChannelBase* p_channel)主程序都删除p_channel,但是ExecPattern有可能返回的p_channel 是NULL。此时的主控是什么都不做。如果非null就删除)5.3 PatternNewSyncAsyncInnerDir同异步向内处理模式5.3.1 类图5.3.2 描述预先了解:交换平台接入的是服务商家,发送的是主机商家(主机)PatternNewSyncAsyncInnerDir 继承 ProcessPattern 类5.3.3 流程图见下页执行主机商家的输出处理主机商家服务商家接口平台CallHost接口平台主机商家是否同步返回Yes
21、服务商家的输出处理(OutProcess),生成输出数据是否服务商家读写渠道相同是否服务商家读写渠道相同创建ClientInfo,记录当前的信息。失败则转出错处理(不大可能)ClientInfo-channel=输入渠道channel=NULL后续不释放channelClientInfo.channel=NULL释放channelchannel=NULL释放channelchannel = NULL创建新的write_channelwrite_channel = channelchannel=NULL通过write_channel返回数据释放write_channelYesNoYes释放!=N
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 接口 详细 设计 文档 资料
限制150内