自由CGI之路V3面向对象可配置CGI编程_第1页
自由CGI之路V3面向对象可配置CGI编程_第2页
自由CGI之路V3面向对象可配置CGI编程_第3页
自由CGI之路V3面向对象可配置CGI编程_第4页
自由CGI之路V3面向对象可配置CGI编程_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

自由CGI之路V3-----面向对象的可配置的CGI编程互联网运营部tommyyan2008-09-031新的CGI系统介绍 在cgi的开发实践中,通过不断的系统重构,完成了一个基于配置的cgi系统。一般情况下,系统中添加一个传统意义上的cgi请求,只需要进行几个配置文件的少量修改即可完成,而不需要进行编码工作。通过驱动模块的扩充可以使系统不断增加新的功能。良好的扩充性:可以基于点的控制也可以基于流程的控制,中间件的技术:使接口在上层表现出了一致的特点重复性的工作的处理:在这个系统中基本上看不到系统的规模的控制:使变更的影响范围在合理的范围内进行;全配置的系统:即使在配置上也很注重细节,做到了基于模板的配置和默认值选取,使一次新的配置也许只是个别字段的修改。2

神奇的tcgi

#include"cgi.h"#defineCGI_CONF_PATH"/usr/local/MKT_Act/conf/"intmain(intargc,char*argv[]){ TCgitheCgi; theCgi.RunEx(CGI_CONF_PATH);}3发展历程4cgi层次结构5CGI处理流程6CGI处理流程7CGI基础层8CGI基础层完成所有与外部应用系统无关的封装完成一个CGI完整的逻辑封装提供基于中间件的驱动接口提供可以重载的流程接口提供二次开发接口提供配置项管理的接口9系统基础层完成所有公司、系统级别的可重用性的封装提供类似cgiex类似的web方式cgi访问对基础库的功能封装TLib、TBase及其他公司、部门相关库提供公用数据源接口的驱动封装TTC、mysql、c4a、支付portal等相关的业务统计、运维统计、告警操作10业务基础层完成所有业务级别的可重用性的封装业务级别的检查 例如:用户注册的检查、黑名单检查、业务公用信息的获取 用户的性别、城市、时间戳、个人账户,可配置的数据读取和操作 高级用户状态、好友资料

11业务层特殊业务逻辑的处理统计点、监控点的添加12CGI基础层完成所有与外部应用系统无关的封装参数处理模板管理操作管理驱动管理项目、模块管理配置系统13基础层-配置系统14项目管理、接口描述-cgi.ini 按照一定规模组织的外部接口(cgi)的集合,接口包含一下描述输入特性输出特性操作列表全局的检查点公共功能 15#发起抽奖[lotterybid]templatetemplateType=1templateCode=utf-8checklogin=trueoplist=bidlotteryargs=actid|typestarttime=2008-02-0108:30:00endtime=2008-03-0123:59:5916参数处理-输入参数输入类型整形/字符类型/特殊类型(文件等)取值范围默认值错误返回对应的描述,返回码是否允许为空17参数处理-输出输出的格式多样(web支持的各类格式)xml、html、图片文件等等返回类型多样错误返回、正确返回,基于模版的返回是否记录执行结果的多样性日志、告警、统计等

18参数中心类-CgiArgCenter字符编码(xml、html、js、url。。。)参数检查(整形大小,字符型长度)输入输出参数的缓冲区根据指定的模板类型进行字符编码

19模板管理根据不同的错误代码、某一个字段的返回值取不同的模板各种格式模板的支持和自动转译基于操作名的模板替换20模板示例<%$RETURN_ERROR_begin$%><%RETURN=default_begin%>try{ varrc1="<%RETURN_CODE%>"; rc2="<%RETURN_SUBCODE%>"; MPPresentlist="";callback(rc1,rc2,MPPresentlist); } catch(e) {status="callbackisnotexist!"}<%RETURN=default_end%><%$RETURN_ERROR_end$%><%$campusdui_begin$%> try{ varrc1="0"; rc2="<%MPResultCode%>"; MPPresentlist="<%MPPresentList%>"; callback(rc1,rc2,MPPresentlist); } catch(e) {status="callbackisnotexist!"}<%$campusdui_end$%>操作原子级的对一个驱动接口访问的描述底层驱动接口操作类型:查询、修改、删除、新增、赠送、抽奖。。。参数变换输入参数和返回结果参数指定服务器相关信息22抽奖操作[bidlottery]driver=Portaltype=modfielddisplay=LotteryRankarglist=actid|URL|LOGIN_UIN|typeargmaplist=actid,MPRuleID|type,LotteryTypesubargs=MPRuleID|LotteryTyperesultarglist=LotteryItem,1|LotteryRank,1|ListID,1serverinfo=172.16.60.16:30008|172.16.244.170:30008testserverinfo=172.16.68.141:30007|172.16.68.141:30007驱动对一个外部接口的统一接口的封装加载方式:动态、静态服务器信息支持的操作类型24驱动-统一接口 对一个外部接口的统一封装,一致性的接口,系统启动时注册到操作管理器中初始化接口 typedefvoid*(*FUNC_DRIVER_INIT)(map<string,string>&);操作接口 typedefint(*FUNC_DRIVER_OP)(void*,constchar*,map<string,string>&,void*);取一条数据接口 typedefint(*FUNC_DRIVER_FETCH_ROW)(void*,constchar*,map<string,string>&);释放数据接口 typedefint(*FUNC_DRIVER_FREE_RESULT)(void*,constchar*);结束接口 typedefint(*FUNC_DRIVER_END)(void*context);25驱动-已经实现的接口TTC支付Portal字符串协议MGW26高级应用-系统扩展性扩充新的驱动建立业务级别的操作建立操作之间的衔接和处理数据源-基于模板的配置流程的特殊处理27公用模块-系统级别GET/POST方式检查参数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论