一种网络通信框架的设计方法技术

技术编号:19351915 阅读:23 留言:0更新日期:2018-11-07 17:25
本发明专利技术公开了一种网络通信框架的设计方法,它良好的接口设计极大降低了开发网络应用程序的难度,提高开发者效率,让开发人员更专注于业务的开发而不必考虑网络通信的相关技术细节。

【技术实现步骤摘要】
一种网络通信框架的设计方法
本专利技术涉及网络程序设计
,特别涉及一种网络通信框架的设计方法。
技术介绍
软件框架就是软件工程中的框架。一般而言,一个软件框架总是面向软件应用的某个领域,它用某种编程语言为该领域的使用者搭建好骨架。而使用者在框架的约束内,通过框架提供的接口,完成一定的应用功能。框架提供了很好的应用性,使开发人员不必每次都从头开始。同时,框架通过良好的设计屏蔽了该领域内最烦琐的细节部分,使不熟悉该领域的开发者也能对该领域进行开发。框架也为开发者提供了一个稳定的基础环境,加快了开发进程。软件框架需要具备以下属性:1.框架是一个内聚的接口和类的集合,这些接口和类相互协助,提供核心的服务功能和逻辑子系统中不变的部分。2.框架包含了的抽象的类,这些抽象类定义了框架中用户需要遵循的约束,包含了对象的交互过程和不变量。3.通常框架的使用者需要定义框架中部分类的子类,才能定制、利用、扩展框架的功能。4.框架包含有抽象方法和具体方法的抽象类。框架采用Hollywood原则“不要找我们,我们会打电话给你”。通常意味着用户通过定义框架中既有类的子类,从框架中获取消息。
技术实现思路
本专利技术的目的在于克服现有技术的缺点与不足,提供一种网络通信框架的设计方法,利用此框架可以使开发人员在不了解底层Socket通信细节的情况下开发出稳定、高性能的网络应用程序。本专利技术的目的通过以下的技术方案实现:一种网络通信框架的设计方法,包括网络抽象层、数据处理层、开放API层的设计步骤;网络抽象层对操作系统提供的Socket编程接口进行封装,对不同版操作系统提供的编程接口进行屏蔽,为数据处理层提供一致的操作接口;网络抽象层还需要选定一种特定的网络I/O模型;数据处理层处理开放API层与网络抽象层发送过来的数据及策略的选择;另外,它还需要进行Session管理;Session对象存储特定用户会话所需的属性及配置信息,这样框架就可以区别出接收与发送的数据包与之关联的客户端;开放API层定义了整个框架的对外接口,它向用户表明此框架可提供的功能与服务;同时,它还定义了编程规范,可以对开发人员进行编程约束;这层不负责具体的功能实现,只是适配与转发功能;此层的设计遵循常用的接口设计规范。优选的,网络通信框架还包括辅助模块层,辅助模块层包含了框架需要用到的非核心功能,包括日志功能、配置功能、进程通信、缓存模块功能;日志模块记录了整个框架运行的信息;配置模块为框架提供相应的配置信息。优选的,网络抽象层选定的网络I/O模型为完成端口,可以把完成端口看成系统维护的一个队列,操作系统把重叠IO操作完成的事件通知放到该队列里,由于是暴露“操作完成”的事件通知,所以命名为“完成端口”;一个Socket被创建后,可以在任何时刻和一个完成端口联系起来。优选的,调用开放API层的步骤包括:创建一个AppSession对象,它代表一个和客户端的逻辑连接,基于连接的操作定义在该类之中;用该类的实例发送数据到客户端,接收客户端发送的数据或者关闭连接;创建一个AppServer对象,它代表了监听客户端连接,承载TCP连接的服务器实例;服务器级别的操作和逻辑定义在此类之中。优选的,Session之间相互独立互不干扰且拥有唯一SessionId标识,维护着客户与服务器通信的生命周期,其生命周期包括创建、初始化、启动、运行、关闭过程。优选的,Session的创建源于服务器监听端口接收到一个客户端连接请求取出该连接的Socket触发新客户端请求事件。具体的,创建完AppSession后需要初始化;初始完AppSession就可以启动Session;启动的过程主要是将Start方法传给一个Task并行任务执行;自此AppSession将开始工作接收客户端发送的信息;其工作模式为:开始接收数据包,接收完成后处理该数据包,进而继续接收数据,此过程均为同步进行;Session生命周期中的最后一步是关闭;Session的关闭将触发AppServer会话关闭事件,进而回收会话相关资源,到此一次完整的会话周期完成。优选的,数据处理层处理通信协议,将二进制数据转化成应用程序可以理解的请求;RequestInfo是表示来自客户端请求的实体类;每个来自客户端的请求都能被实例化为RequestInfo类型;RequestInfo类型必须实现接口IRequestInfo,该接口只有一个名为“Key”的字符串类型的属性;为了业务逻辑处理的方便,来自客户端的请求最终会被影射成命令;命令类需要实现ICommand<TappSession,TrequestInfo>:ICommand接口;请求处理代码需置于ICommand<TappSession,TrequestInfo>接口的ExecuteCommand(TappSessionsession,TrequestInforequestInfo)方法中;ICommand接口中只包含一个Name属性,属性值用于匹配接收到请求实例的Key;当一个请求实例被收到时,框架将会通过匹配请求实例的Key和命令的Name的方法来查找用于处理该请求的命令。优选的,辅助模块层包含日志模块;当框架运行时,日志系统会自动启动;框架调用者不需要创建自己的日志工具,直接使用框架内置的日志功能;框架默认使用log4net作为第三方日志框架;框架允许自定义Logger。本专利技术与现有技术相比,具有如下优点和有益效果:1、简单易用,只需要定义几个类便可创建出健壮的Socket服务器程序。2、支持同步与异步两种通信模式,只需要修改一下配置文件就能将程序从一种模式切换成另一种模式。3、支持多个Socket程序实例,可以在配置文件中定义多个运行在不同端口上的Socket程序实例。4、灵活的日志策略能够记录大部分的Socket行为。附图说明图1是实施例方法的架构示意图。图2是实施例方法的请求处理模型图。具体实施方式下面结合实施例及附图对本专利技术作进一步详细的描述,但本专利技术的实施方式不限于此。实施例1基于Windows平台设计的一种网络编程框架。利用此框架可以使开发人员在不了解底层Socket通信细节的情况下开发出稳定、高性能的网络应用程序,让开发人员更专注于业务细节而不用处理网络通信技术中的细节问题。通常而言,编写网络应用程序都需要处理同步异步、丢包粘包、拆包组包问题,需要考虑内存管理、缓存设计相关问题,需要使用到多线程技术,需要将性能与稳定性等因素考虑进去。这些技术细节与具体的业务并不紧密相关联,因此都可以在网络框架中进行处理。本方案采用软件分层架构设计,最核心部件分为网络抽象层、数据处理层、开放API层、辅助模块层。网络抽象层主要职责是对操作系统提供的Socket编程接口进行封装,对不同版操作系统提供的编程接口进行屏蔽,为数据处理层提供一致的操作接口。另外,网络层还需要选定一种特定的网络I/O模型。本方案中选择的是完成端口。可以把完成端口看成系统维护的一个队列,操作系统把重叠IO操作完成的事件通知放到该队列里,由于是暴露“操作完成”的事件通知,所以命名为“完成端口”。一个Socket被创建后,可以在任何时刻和一个完成端口联系起来。数本文档来自技高网...

【技术保护点】
1.一种网络通信框架的设计方法,其特征在于,包括网络抽象层、数据处理层、开放API层的设计步骤;网络抽象层对操作系统提供的Socket编程接口进行封装,对不同版操作系统提供的编程接口进行屏蔽,为数据处理层提供一致的操作接口;网络抽象层还需要选定一种特定的网络I/O模型;数据处理层处理开放API层与网络抽象层发送过来的数据及策略的选择;另外,它还需要进行Session管理;Session对象存储特定用户会话所需的属性及配置信息,这样框架就可以区别出接收与发送的数据包与之关联的客户端;开放API层定义了整个框架的对外接口,它向用户表明此框架可提供的功能与服务;同时,它还定义了编程规范,可以对开发人员进行编程约束;这层不负责具体的功能实现,只是适配与转发功能;此层的设计遵循常用的接口设计规范。

【技术特征摘要】
1.一种网络通信框架的设计方法,其特征在于,包括网络抽象层、数据处理层、开放API层的设计步骤;网络抽象层对操作系统提供的Socket编程接口进行封装,对不同版操作系统提供的编程接口进行屏蔽,为数据处理层提供一致的操作接口;网络抽象层还需要选定一种特定的网络I/O模型;数据处理层处理开放API层与网络抽象层发送过来的数据及策略的选择;另外,它还需要进行Session管理;Session对象存储特定用户会话所需的属性及配置信息,这样框架就可以区别出接收与发送的数据包与之关联的客户端;开放API层定义了整个框架的对外接口,它向用户表明此框架可提供的功能与服务;同时,它还定义了编程规范,可以对开发人员进行编程约束;这层不负责具体的功能实现,只是适配与转发功能;此层的设计遵循常用的接口设计规范。2.根据权利要求1所述的网络通信框架的设计方法,其特征在于,网络通信框架还包括辅助模块层,辅助模块层包含了框架需要用到的非核心功能,包括日志功能、配置功能、进程通信、缓存模块功能;日志模块记录了整个框架运行的信息;配置模块为框架提供相应的配置信息。3.根据权利要求1所述的网络通信框架的设计方法,其特征在于,网络抽象层选定的网络I/O模型为完成端口,可以把完成端口看成系统维护的一个队列,操作系统把重叠IO操作完成的事件通知放到该队列里,由于是暴露“操作完成”的事件通知,所以命名为“完成端口”;一个Socket被创建后,可以在任何时刻和一个完成端口联系起来。4.根据权利要求1所述的网络通信框架的设计方法,其特征在于,调用开放API层的步骤包括:创建一个AppSession对象,它代表一个和客户端的逻辑连接,基于连接的操作定义在该类之中;用该类的实例发送数据到客户端,接收客户端发送的数据或者关闭连接;创建一个AppServer对象,它代表了监听客户端连接,承载TCP连接的服务器实例;服务器级别的操作和逻辑定义在此类之中。5.根据权利要求1所述的网络通信框架的设计方法,其特征在于,Session之间相互独立互不干扰且拥有唯一SessionId标识,维护着客户与服务器通信的生命周期,其生命周期包括创建、初始化、启动、运行、关闭过程。6.根据权利要求1所述的网络通信框架的设...

【专利技术属性】
技术研发人员:陈小锋
申请(专利权)人:广州慧睿思通信息科技有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1