简报框架介绍www.27111.com

[连载]《C#www.27111.com,报道(串口和网络)框架的计划性与实现》-
0.前言

 

目       录

先是章           通讯框架介绍… 2

1.1           通讯的本质… 2

1.2           框架简介… 3

1.3           解决实际题材… 4

1.4           应用场景… 5

1.5           框架应用特点… 6

1.6           框架设计特点… 7

1.7           插件式应用框架… 9

1.8           开发环境… 10

1.9           第三方组件… 11

1.10        小结… 12

 

 

率先章     通讯框架介绍

1.1    通讯的本色

    
通讯就是信息的传递,新闻传送又分为:单向信息传递和双向音信传递。用喇叭举行播放是单向音讯传递,打电话是双向消息传递。

    
单向音讯传递相对较为简单,只需要向消息接收者实时发送数据,而不用管音讯是否到达,以及到达后是否开展了拍卖。这种信息传递形式适用于对数据完整性要求不高的运用场景,例如:采集温度传感器的多寡。可是,假设数据源或是传感器相比较多以来,要考虑到并发量的题目,随着互联网技术的上扬,并发问题是可以很好的解决。

    
双向音讯传递相对较为复杂,不仅关系到发送数据的题材,还涉及到信息握手、数据补传等一多元互动问题。假如把双向音讯传递非要分成客户端和服务端的话,还波及到是哪一方首发起音信传递,客户端主动向服务端发送数据,服务端接收到数量后举办拍卖;可是,有时候服务端不希望接受到客户端的数目,只有在服务端向客户端发送请求命令后,客户端依据指令才可以重临相应的多少。在与硬件举办双向通讯的时候,还提到到载波通道是半双工和全双工的题目,半双工是平等时刻在通路上只可以A向B或B向A发送数据,只可以单向数据传输;全双工是A向B发送数据,同时B向A也得以发送数据,发送和接收数据两者可以同步举办。这种信息传送格局适用于对数码完全性要求相比高的应用场景。

   
不管是单向信息传递,如故双向音信传送,都提到传输协议、编码格局和多师长验。传输协议是力所能及封装和分析并且可以互相精通的数码格式,它是一种多少规约模式,可以运用正式的商谈格局,例如:Modbus、XMPP、AMQP、MQTT等,也得以动用自定义协议;有了传输协议后,在传输过程中还关乎到编码格局,例如:GBK、UTF、ASCII,有可能在编码的底子上还要举办加密,以保证数据的安全性;为了多少包完全性、可解析性,还要加进对数据的校验,一般采纳较多的校验模式为CRC。传输协议、编码格局和数量校验的目标只有一个:防止数据在传输过程中遭受打扰,或被恶意曲解,给多少处理造成意外的结果。打个比喻,一个华夏人说官话,一个外国人说美式英文,语法不一致,编码格式不等同,结果导致说话听不懂、文字看不懂,假如误认为是在骂人,有可能还要打一架。

   
现在着力都是面向对象开发格局,new出来一个目的,把对象的性质赋值后,直接把目的传给接口函数完成发送数据。这种操作形式使开发者更多的眷顾工作规模,从而掩盖了很多技术细节,例如:连串化、协议、编码、字节流的操作等等。

   
可是,SuperIO保持对底层字节流(byte[])的操作,更多的关心通讯框架、数据协议、数据缓存、数据处理流程、设备驱动、插件、二次开发等方面。因为在物联网时代,将会晤对不少数据源,包括:各类传感器、手机、PC端、智能硬件、传统嵌入式设备等等,协议众多,并且很难统一,所以最间接的操作数据就是字节流(byte[])。此外,很早在此从前传输技术不鼎盛(300波特率),同时受寄存器的储存限制,为了缩短数据量,1个字节的8位要代表8种状态类型。

   
在物联网时代,将面临各样通讯意况,例如:一个串口通道,一对一、一对多的法门通讯;一个网络IP通道,一对一、一对多的报导。所以,没有一个好的框架支撑是心有余而力不足满意通用性的渴求。

    
有人问题串口通讯、网络通讯肿么办,有人回答那么些很容易,不过要把上述问题以及其他题目都考虑周全的话就是一个错综复杂的题材,并且有点题目不是很好解决。

1.2    框架简介

     
假诺一个店铺的硬件产品居多,协议又各不相同,每一个硬件产品都对应一套上位机软件,需要专人爱戴。而客户的需要日益变化,造成维护成本较高,并且阻碍了商店的很快发展。另外,即便修改同类硬件产品的配套软件,也可能导致新的BUG出现。

    
随着市场和合作社发展的急需,需要整合、重构软件系统以适应环境、硬件的随地变更,降低人力、运维成本,释放劳引力。

    
所以,对于发展到一定等级、或是一个早熟的店铺肯定要有软件框架作为支撑,这是从业务角度考虑提升应用框架的必然性。

    
技术上边,框架是一个序列全体或部分的可复用设计,日常由一组接口、抽象类和类之间的合作组成。随着新闻化的提高,软件出品的开发也越发复杂化,解决问题的复杂度也在时时刻刻的滋长。IT界也在检索多种情势,包括制定各个软件开发标准和正规、开发更尖端更有生产力的编程语言、开发更好的编译器和运作时以及不需要编译的解释性开发语言、开发效用强大以及更通用性的机件库、探索适用不同采用场景的设计形式等。

    
从软件工程角度出发,在计划规模要动用特殊的软件构架和设计格局来达成大家预料的对象:

  • n  尽量提升软件的可重用性,防止不必要的再次编码工作。
  • n  扩张组装的封装性。
  • n  提升软件的模块化程度。
  • n  不同功效模块之间可以无缝集成。
  • n  软件具有灵活的可扩充性。
  • n  软件出品的扩大和支付实现标准化。
  • n  软件出品具备面向不同选择范围的适应性和易移植性。

   
为了贯彻这一个要求,在规划范围上,越来越多的软件出品起首运用选取框架的思考举行软件结构设计。应用框架已经是一个被广大应用的术语,它变成软件开中一种特别实用并且常用的宏图、开发规范。

   
我们肯定见过许多自称“框架”的软件出品,也许有人会倍感不屑,有些代码量很少的次序竟然也称自己是某种形式的利用框架?事实上,应用框架无关乎规模大小,就像房子一样,摩天大楼和民房都是房屋,只可是它们的层面和精巧度大小不平等而已。

    在架构师眼里,代码都是亟需规划的,都是有框架的。

1.3    解决现实问题

    在工业领域,通常碰着软硬件之间的数码交互,并且面临着错综复杂的实地条件:

(1)复杂的、多样的报导协议。有正统的商事,例如:Modbus等,也有成百上千基于标准协议修改的磋商格式、以及自定义探讨格式,并且距离。对于不佳的软件架构,疲于应对,扩张设备或协商要对全部软件举行梳理,往往在此过程中出现新的题材或BUG。

(2)针对不同用户对软件界面或效益的渴求有很大不同,使之满意不同用户的显得要求,可以自定义数据呈现界面。

(3)在做集成项目标时候,输入输出数据的多样性。首先,要合并其他厂家的装置,要求数据举行衔接。其次,还有很多是此外厂家要合并自己家的设施,就提到的输出数据的问题,数据格式要求也是出入。  

(4)通讯链路的多种性,对于同一个装置或者要协理RS232/RS485/RS422、RJ45、3G/4G等通讯情势,所以对于一个设备要对应多种报道形式(串口和网络),也给大家的开销造成很大的障碍。

(5)软件各版本、以及软件与硬件之间的兼容性很差,管理起来复杂。

  
为了缓解以上诸多题材,开发一个软件框架,帮忙二次开发。在不对软件框架改动的意况下,可以很有利的连接设备、维护设备、集成设备、处理装置业务数据等。软件框架相对安静,把容易生成的局部开展灵活设计。

1.4    应用场景

   
作为一个框架平台,在形成产品后要定位它的采纳场景,在筹划框架从前要有明晰的认识,并在设计过程中穿梭加剧应用目的。

   
在成品应用方面,框架平台可能要配置在PC机上,与众多硬件、传感器举行数据交互,并在地面开展数量存储。

    
在档次采纳方面,框架平台可能部署在服务器端,与客户端(PC机、硬件、传感器等)举行数量交互,并储存到数码中。

    
既然框架平台在PC机上和服务端都可能行使,那么框架与框架之间也有数据交互的可能性。

    
所以,框架平台的竞相场景包括两方面:第一、与硬件产品竞相。第二、与软件出品竞相。基本那两地方考虑:

1)框架平台运用在PC机上

要害运用在自动站的工控机上,通过RS485/RS232、RJ45、4-20mA等办法

募集硬件装备的数码音讯。同时,通讯平台与劳务器端的软件举办互动,负责上传数据信息,以及收取控制命令等。

2)框架平台利用在服务器端上

极限设备以3G/4G、无线专网、卫星等与报道平台连接,举行数据交互,终

端设备包括:PC机、移动终端(手机)、监测设施和传感器等。

    基于上述考虑,框架平台的行使场景布局图如下:

 www.27111.com 1

1.5    框架应用特点

  对于框架的特征,大家要有简短、清晰的筹划,其中囊括:功用范围、性能层面、应用范围、运行层面、二次开发层面等等
,这多少个将激化大家在规划、开发过程的目的。这一个不仅要写在纸上,更要记在脑子里。SuperIO在设计的时候,简单的列出了它的特征,虽然有些特点是新兴完美的,如下:

  • n  疾速构建通讯数据收集平台软件的宿主程序

  • 急迅构建设备驱动,以及有关的商谈驱动、命令缓冲、自定义参数和实时数据属性等

  • 神速二次开发图形突显、数据输出、服务驱动,并以插件的情势展开挂载。
  • n  一个装备驱动,同时协理串口(COM)和网络(TCP Server/Tcp
    Client)通讯机制,可以自由切换

  • 内置协议驱动,可以把第三方协商转换成自定义的说道,协议的真相是对字节流的操作。

  • 内置设备命令缓冲器,可以设置命令发送的事先级别,保证命令的迅猛响应。

  • 以服务驱动插件的章程对OPC服务、4-20mA输出、LED大屏显示、短信服务等举办二次开发。
  • n  急速支付、运行平稳、扩大性强大
  • n  适用工业上位机软件,以及系统集成中采集远程设备数据
  • n  支持Windows XP/7/8/8.1、Windows Server 2003/2008/2012

1.6    框架设计特点

   
有些书籍说了一大堆设计特性,有点令人岂有此理,没见有层次感,我觉得对于此类框架的风味最重大的牢笼两点:稳定性、扩充性、性能。

稳定性

     
对于一个实时数据收集框架来说,紧要的统筹特点就是稳定,这是此外所有特点的前提。不可能出现相当后软件无故退出的场景、不可以冒出关闭软件后经过不可以退出的现象、无法出现不可以响应数据的气象、无法冒出不可能处理数据的境况等等。

    
基于可能存在的这个神秘的题目,我们要考虑:容错机制、模块无缝过渡、记录日志等。

    
容错机制是富有软件都有些一种体制,大旨思想是对特别情况的处理办法。对于操作一般性的功用,假设出现分外状态,咱们可能不需要过多的干涉,只需要展开日志记录就可以了,对于再度操作同样的效果可以阐明异常情状的可重复性,依据日志信息可以有指向的进展缓解;对于事务性的职责,对这么些动静的拍卖会有多种摘取,可以大概的笔录十分音信、可以销毁当前的资源,重新起先任务,间接任务成功、可以过来到出现分外状态的节点等,按照不同的气象,选取处理的办法也不相同。就一定于,某人说错话了,要开展弥补,这就要看当时的环境和直面的人,固然是好爱人,这事即便过去了。

    
模块无缝衔接要求我们对接口、抽象类以及类的模块划分、设计粒度有很好的握住,更多的展现在经历方面。模块之间是一个契约关系,咋样履行契约会涉及到很多设计形式的选项,所以说对统筹模块的握住程度直接影响软件框架的成熟度。就好比五人对话,说话模式、语意都不可能相互通晓,就有可能话不投机半句多。

    
记录日志是具备软件必须要有的特点,这为我们排查错误提供了很大的便民。日志记录有广大开源的类别能够拿来间接行使,例如常用的Log4Net。但是,有时光探究这东西的年月,自己也能写一个适用于自己的日志库了。

    
稳定性是软件运行的最直接反应,是所有实时性框架设计最要紧考虑的因素,也是最难达到的。

扩展性

     
用户可能比设计者更敬重稳定性,可是用户不仅满意于安乐,还会提出各类新需要,更多的映现在效劳方面。倘若扩充性不佳,对于开发者来说是万丈深渊。

     
所以,可扩充性是行使框架最显眼的性状之一,它象征应用框架的效用具有生长力量。没有扩展能力的利用框架毫无使用价值和含义,因为框架本身就是为着提供一个联结的上下文环境给现实的运用使用。应用框架的可扩张性使我们可以遵照一个平台实现不同的功力,满意不同的使用需求,有些需求是框架本身就补助的。

    
框架的可扩展性首假诺由此持续和集纳两种方法实现的。继承模式是指通过派生类继承基类或接口,通过录取基类的效用并定义新的功效的点子贯彻效益扩张;聚合形式是指调用不同的花色组合为一个新类型而恢宏出全新的功效。研讨Framework框架源代码,可以深远感受到连续和聚合的功力。

     
假若单说扩张性会让人有些失之空洞,那么我们还要考虑模块化、可重用性、可维护性等等。

     
模块化,并不是把各种效率都编译成一个DLL程序集就足以称呼模块化,一个先后集内部也可以模块化。从框架层面在逻辑上横向、纵向对模块和层次开展划分,以降低模块之间的耦合度,不会因为一个模块的生成而影响其他模块,划分模块时保证模块之间输入输出的统一性。

     
可重用性,也足以叫做可复用性,是衡量代码质料的基本点标志之一。既然是框架设计之中一个目标就是提升效能,收缩没有必要的重复工作,降低本钱。一般的话,框架可采纳可以是离散存在的函数、可以是包装好的类库、可以是包装好的累累类库,以造福我们在接近功用、业务中行使。

      
可维护性,依据业务要求变动可以有利于开展转移的能力,也是扩大性的角度。保证我们尽量少修改代码完成需求而又不影响软件的全部运行。

性能

    
性能是软件运行效用的首要目的,是对软件运行极限的考验。例如,不管挂载多少设备驱动,用户要求1分钟要读取五回具有设备的数额,假设实现持续,用户说抱歉,我们无法签合同。

    
在互联网行业对性能的渴求更高、更完善,有不少目的性的参数,例如:响应时间、延迟时间、吞吐量、并发量、资源利用率等等,所以一般要对软件、服务拓展压力测试。在观念行业方面也不防借鉴运用先进的框架或第三方组件,例如:音讯队列框架(kafka、ActiveMq、RabbitMq、ZeroMq、EQueue),响应式音讯框架(Akka.net)、作业调度框架(Quartz.net)等等,这个可以推向增高软件、系统的实践功能和性质。

    
当然,对于性能来讲,软件只是一个地点,更多的还提到到网络布局、服务器部署等方面,是一项综合性的结构。

    
对于平安、扩展性、性能,它是一个一体化的五个地点。相信我们都看过F1竞技,要求赛车在便捷行驶过程中保障不翻车,高速行驶对轮胎磨损很惨重,并且要求在很短的时刻内方便对轮胎的转换。

1.7    插件式应用框架

    
插件技术是在软件的计划和支付进程中,将全体应用程序划分为宿主程序和插件对象两有的,宿主程序可以调用插件对象,插件对象可以在宿主程序上落实和谐的逻辑,而双方的互动基于一种集体的通信契约。宿主程序可以独立于插件对象存在,尽管没有另外插件对象,宿主程序的周转也不受影响,由此,我们可以在制止改变宿主程序的场地下通过增减插件或涂改插件的主意扩张或调整功效。由于采取了插件技术的宿主程序有所了一个框架的本质特征,因而可以将它作为是一种插件式框架。插件式框架可以使得地降落效果对象与对象管理逻辑之间的耦合程度,并将耦合置于最优的水平。

    
对大部分处理器用户和软件开发者而言,插件式应用框架其实算不上什么秘密的东西,事实上,几乎每个人都曾使用过所有插件式功用的软件出品。这个软件有大有小,从操作简易的比如播放器软件到复杂桀骜的各种正式应用软件,都或多或少使用过插件机制,只是对于最后用户而言,由于日常满意于接纳一款成熟软件,很少有人刻意去关注那多少个软件使用的是如何的架构体系。

     Visual Studio
IDE、Elipse等都是插件式的开发工具,并落实了很强劲的插件机制,也敦促这些软件变的更为强大。

     一般而,一款软件、一个框架使用插件机制的原因根本基于以下3点:

  • n  可以在不必对程序举行重复编译和揭橥的原则下扩充程序的功能。
  • n  可以在不需要程序源代码的环境下为程序扩充新的效用。

  • 在一个程序的工作逻辑不断暴发变更、新的规则不断插手时能够灵活适应。

   
实现插件机制一般有3种技术:基于动态连接库DLL的插件、基于组件对象模型COM的插件、以及基于.NET反射技术的插件。

    SuperIO是应用反射技术实现的插件机制,在背后的章节中开展详尽介绍。

1.8    开发环境

支出语言

使用C#开发的SuperIO框架,当然使用任何语言也可以实现,例如:JAVA。

开发工具

一开端拔取的是Visual Studio 2008工具举行付出,后来升格到Visual Studio
2012,并对SuperIO举办了再也编译。

扶助框架

一起首采取的是Framework 2.0框架举办付出,后来提高到Framework
4.0,为了配合较低版本的操作系统(Windows xp
sp3),最高版本的框架只好利用Framework 4.0,再高版本的框架在Windows xp
sp3下无法运行。如下图:

 www.27111.com 2

编译环境

应用X86平台对品种进展编译,倘使开发插件也需要用X86平台展开编译,重要考虑到32位和64位操作系统的通用性。如下图:

 www.27111.com 3

支出条件:

一先导在Windows xp sp3操作系统下展开开发,后来提拔到Windows 8/8.1。

1.9    第三方组件

    使用Developer
Express套件对框架的UI部分举办布局,首要行使在Menu、MdiTabForm、DockPanel这两个地点。

   
使用PCOMM.DLL对串口通道举办操作,没有使用微软自带的SerialPort组件,因为这些组件与部分工业串口卡不匹配,请参见:SerialPort操作PCI-1621D多串口卡,出现万分”参数不正确”

   
OPC服务端动用的是OPC基金会的WtOPCSvr.dll组件,然则那多少个需要正版授权。OPC客户端应用的是OPCDAAuto.dll组件。可以在http://pan.baidu.com/s/1pJ7lZWf下载SuperIO_Demo.rar事例代码,里边有完全的OPC服务端和客户端的代码。事例阐明:http://www.bmpj.net/article-11-1.html

1.10     小结

    
从软件设计角度,框架是一个可复用的软件架构解决方案,规定了使用的系统布局,表明软件体系结构中各层次间及其层次内部各组件间的恒心关系,责任分配和操纵流程,表现为一组接口,抽象类以及实例间协作的情势。

    
框架决定了一个软件的生命力,一个好的框架更能有助于大家对它的随地维护、重构、完善。

 

下一单将介绍(SuperIO)框架总体的统筹。

 

笔者:唯笑志在

Email:504547114@qq.com

QQ:504547114

.NET开发技术联盟:54256083

发表评论

电子邮件地址不会被公开。 必填项已用*标注