专栏/Workers框架教程1——简介

Workers框架教程1——简介

2021年09月26日 12:17--浏览 · --喜欢 · --评论
粉丝:934文章:30

1. 简介

    Workers是一个基于LabVIEW队列消息处理器模板的架构。在阅读本文之前,假定你对QMH设计模式已经非常熟悉。

    Workers为LabVIEW开发者提供了以模块化队列消息处理器(QMH)为基础的框架和API,同时提供了一整套支持工具,用于LabVIEW初级开发者、高级开发者或开发团队快速且容易的开发可扩展的QMH应用。

    虽然这套框架设计的初衷是为了满足没有LVOOP经验的开发者的需求,但掌握基础的LVOOP知识将可以让框架发挥出最大优势,并且有助于理解通用基础类模板项目(位于LabVIEW启动窗口)。

    这套教程提供了Workers框架各方面的一些细节信息,也讲解了使用框架时如何利用工具提高开发效率。

1.1 特性

Workers框架的主要特性有:

1.1.1 模块化

    Worker是赋予模块化队列消息处理器的名称。通过封装成模块,Workers像积木一样组合在一起,便于创建程序架构的层级关系。模块化的设计也使它们可以被重复使用,并且通过使用创建/添加Worker工具可以方便的进行扩展。Worker被设计的即精简又灵活,减少了复制代码的工作量,并且既可以静态调用也可以动态调用。Worker将在第2章进行详细讨论。

1.1.2 可扩展

    通过使用创建/添加Worker工具,可以添加任意多个Worker,从而快速实现LabVIEW程序的各项功能。这个工具帮助开发者在尽可能短的时间内创建Worker并且将它们组合在一起。不管是在项目创建的初期还是对现有程序进行扩展,都可以节省开发者的精力。而且,还可以重复使用其他项目中的Worker,或者在其他非Workers架构的项目中添加新的Worker。关于该工具的讨论详见第8章。

1.1.3 优先级队列

    Workers使用优先级队列在Worker内部或者多个独立消息处理循环之间传递消息,在标准LabVIEW FIFO型队列和事件基础之上增加了新的功能。每一条消息都被赋予一个优先级:低、普通或者高,并且在任何优先级下,消息都是按照与入队相同的顺序出队的。对于重要程度不同的消息,这个特性可以使重要的消息优先执行,其他消息等待重要消息执行完后再执行。该特性将在第4章进行详细讨论。

1.1.4 调试工具

    调试工具决定了一个软件框架的好坏!在Workers框架的设计之初,调试工具就已经同时开始开发了。它使代码的运行更加透明、易于定位。调试任务管理器显示了所有正在运行的Worker,并附带了它们的当前状态。通过点击鼠标可以直接跳转到处于运行状态的Worker(副本)并进行进一步的调试。调试消息记录器按照顺序显示了所有在Worker的消息处理器之间发送的消息,并向开发者展示每一条消息使什么时候入队列,什么时候出队列的。除此之外,还能够显示错误发生的时间和位置。通过使用调试工具,开发者可以轻而易举的对代码的Bug进行定位,然后直接跳转到Bug发生的位置进行修改。调试工具在第7章详细讨论。

1.1.5 Worker层级可视化工具

    什么是应用程序中的Workers调用链层级关系?应用中的Worker是如何调用其他Worker的?它们是被静态调用还是动态调用。Worker层级可视化工具就是通过显示调用链层级关系来说明这些信息的。LabVIEW项目管理器仅仅展示了项目中所有的Worker,而Worker层级可视化工具以树状形式展示了这些Worker之间的关联关系。该工具在第10章讨论。

1.1.6 条件标签

    条件标签是Workers框架的独特特性,用于取代“字符串常量”对条件结构中对应的条件帧进行定义。和字符串常量相比,条件标签有许多优点,而且可以通过拖拽工具快速创建。它还可以用于从入队列的节点向出队列节点跳转,这可以帮助开发者在开发过程中追踪消息在程序框图中的流向。在4.5小节将详细讨论条件标签。

1.1.7 通过LVOOP扩展QMH

    尽管Workers框架可以被没有LVOOP经验的开发者使用,但因为Workers是基于LVOOP的,那些掌握了基础LVOOP知识的开发者可以更加充分的发挥出该框架的优势,这和使用不是基于LVOOP的程序相比,益处更明显。所有的Worker都继承自Worker.lvclass类,它囊括了Worker的大多数公共API。这意味着自己创建的Worker并不包含所有的通用框架代码,这样做可以极大的减少代码的复制。Worker的通用功能还可以通过继承其他的第三方基类来进行扩展,可以随意对Worker的公共API进行重写,或者添加自己的通用代码,只要继承了某个类,这个类就可以被任何Worker使用。这个主题将在第13章进行讨论。


投诉或建议