Windows平台下高性能并发服务引擎设计(一)

 

一、系统内核设计框架图

图示为一个简单的引擎设计草图,最顶层为用户应用开发层,是整个服务引擎的唯一对外接口(直接开放给用户层,由用户层自定义开发),整套服务引擎的设计理念是采用事件驱动模式,本篇主要从该框架图入手简要介绍我所设计的后台服务引擎,后续篇章中我会对每个环节进行详细介绍。

该套引擎在我的程序中被称为IApplication,它包括系统日志接口,定时器接口,session管理器,虚拟服务器列表管理,当前虚拟虚拟目录等。

系统的设计约定如下:

底层系统只关心底层的设计和开发,系统底层的安全由底层自己负责,但是用户层在开发自定义应用的时候,必须接受底层给出的约定,这些技术约定会在后期的开放接口中给与说明,用户层自己的安全由用户层自己负责,底层不做考虑。

事件驱动模型设计:

内核层系统驱动采用iocp(windows平台下完成端口)来实现,由事件驱动概念引申出的io驱动以及定时器驱动都是基于该机制上实现。

Io模型设计:

Io的读写事件有io驱动层来完成,图中将io句柄单独拎出来考虑,主要是因为考虑到以下几点:

        Io多样性(TCP、udp、文件io、管道等)。

        扩展性。

        灵活性,支持多样性io,内核以及用户层不用关心io的实现,仅仅需要关心io能实现的功能,并且能够根据实际需求选择不用io模型。

会话机制:

    会话是服务器端用来标识客户端根服务器之间的联系,每一个客户端可以跟服务器之间同时进行多个通话如果有必要。

 

定时器:

每个虚拟器都有自己的一套定时器驱动,由内核实现,用户层可见,并可按照约定使用定时器

 

二、用户层开发接口

class IGooInterface

{

public:

    virtual ~IGooInterface(){};

 

    /*

     * 函数名称: Init

     * 函数功能: 初始化

     * 参数: application

     * 初始化成功返回true,否则返回false

     */

    virtual bool Init(IApplication& application) = 0;

 

    /*

     * 函数名称: Uninit

     * 函数功能: 销毁

     * 参数: application

     * 初始化成功返回true,否则返回false

     * 注意销毁时主程序忽略该函数返回,返回值留待扩展测试使用

     */

    virtual bool Uninit(IApplication& application) = 0;

 

public:

    /*

     * 函数名称: OnTimer

     * 函数功能: 定时器回调函数

     * 参数: application

     * 参数[handle]: 当前定时器句柄,注意定时器触发时,已经从定时器队列中移出了,用户无需使用该句柄从定时器中再次移出

   

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值