LabVIEW操作者框架(Actor Framework)范例集锦之五:官网论坛(下)

2022年10月06日,国庆节第六天,范例集锦系列文章继续输出中!

学习软件框架,特别是学习与掌握难度大、复杂性高,且尚处在不断演进变化的LabVIEW操作者框架(Actor Framework),离不开关键的各类范例的研读、模仿转换和工程实用。

NI官方以及开发者社区,为LabVIEW操作者框架(Actor Framework)这个在LabVIEW图形化开发环境中,开发能力最为强大的多任务并发框架,提供了诸多项目快速模板和多种范例例程。

在这里,我将操作者框架的相关例程做一个统一梳理和汇总,方便各位小伙伴们在学习中按图索骥,从而少走弯路和节约时间。

LabVIEW操作者框架(Actor Framework)的范例按其出处来源分为下面几类:随系统所带的范例例程,NI官网社区论坛中的范例,讲解视频配套的范例,技术交流大会演讲范例附件、VIPM(VI Package Manager)中范例模板。

由于操作者框架的范例非常多,单用一篇文章的篇幅是肯定讲解不完的,因此我先按照上面的范例出处分类写一个系列文章。

本篇就是这一系列范例文章中的第五篇,讲解一下官方操作者框架技术讨论论坛中的相关推荐例程的后半段内容,技术论坛的前半段内容请参考《范例集锦之四:官方论坛(上)》,以及更前面的系列相关内容请参与下列链接内容。

LabVIEW操作者框架(Actor Framework)范例集锦之一:系统自带范例

LabVIEW操作者框架(Actor Framework)范例集锦之二:视频范例

LabVIEW操作者框架(Actor Framework)范例集锦之三:网络搜索范例

LabVIEW操作者框架(Actor Framework)范例集锦之四:官网论坛(上)

3. 网络分布式篇


操作者框架开发的操作者系统应用程序,除了可以在单机系统,即一台计算机上使用外,也可以以操作者框架为基础,开发在分布式网络环境下的多台计算机系统使用,通过网络通信进行分布式协作应用系统。

此时典型的消息发送通信地址由原先的单机中的队列消息引用参考内存地址,变为代理操作者(Proxy Actor)的网络通信地址。

在进行网络通信时,官方论坛给出了多种通信方式的范例示范,包括使用远程VI服务器主从方式的Remote Launch 、NI网络流方式(network streams)的Linked Network,以及采用更加通用的TCP/IP的Network Endpoint Actors ,最后是关于是否有可能在构建Web Service(或者Web API)后台开发的时候采用操作者框架的一个技术讨论。

另外,在网络分布式的范例中,大量使用了面向对象设计模式中的代理(Proxy)模式。

3.1 主从方式

使用VI服务器远程启动嵌套操作者和相关代理(Proxy)的主从方式,较为适用于简易便捷的远程分布式应用程序,该范例的开发者也是操作者框架的核心主程人员——AristosQueue。

https://forums.ni.com/t5/Actor-Framework-Discussions/Introducing-remote-launch-for-Actors/m-p/3447806#46210

图片

3.2 Linked Network Actor

Linked Network Actor 使用网络流技术在两个已启动的 Actor 之间完成建立点对点的链接。

通常情况下,该链接是两套常规的操作者系统(Actor Systems)层级通信树中的特殊通路。在负责链接的两端操作者中,操作者首先是寄宿在单独的应用程序实例中,例如,在台式计算机上运行的主机应用程序,和在实时系统上运行的远程目标应用程序。

Linked Network Actor 可以适用于连续性连接和间歇性连接,例如定期连接到其 实时系统(RT) 目标,以进行监控的上位机主机系统。

https://forums.ni.com/t5/Actor-Framework-Documents/Linked-Network-Actor/ta-p/3513034

3.3 Network Endpoint Actors

Network Endpoint Actors 是 Linked Network Actor 分布式方案的提升改进版本,在Linked Network Actor 通信协议走的是NI公司特殊封装的网络传输流协议,而 Network Endpoint Actors则是标准的TCP/IP的协议来传递消息。

https://forums.ni.com/t5/Actor-Framework-Documents/Network-Endpoint-Actors/ta-p/3525072

并且,Network Endpoint Actors 尚在不断地演进变化中,随着接口在操作者框架的中的更为广泛的应用中,后继的版本也将改为接口形式的代理封装形式。

Linked Network Actor 和 Network Endpoint Actors 范例和开发方范例演示的开发人员均是另外一名操作者框架的核心主程人员——justACS。

3.4  利用操作者框架开发 Web Service 的方式可行性的讨论

LabVIEW的操作者框架是实现 Actor 模型的代码库之一,关于二者之间的关系,大家可以参考我以前撰写的一篇回答。

https://www.zhihu.com/question/378650962/answer/1081189437

简而言之:LabVIEW是图形化数据流编程范型,通过操作者框架(Actor Framework)进而提供类Actor Model的风格的并发编程范型,从而进一步的提升了LabVIEW开发大型复杂的并发场景的能力。

很多其它语言也利用该模型开发了非常复杂的分布式应用库包框架,比较典型的就是基于Erlang编程语言的RabbitMQ分布式消息队列库,以及使用编程语言Scala开发的Akka开发库。

图片

图片

由于Actor Model开发模型理念中核心异步消息通信和状态非共享的概念,非常适合进行分布式开发。下列技术论坛中的链接并没有提供一个完整的视频,但是讨论了一下是否能够使用LabVIEW的操作者框架来开发Web Service的可能性。

https://forums.ni.com/t5/Actor-Framework-Discussions/Actor-Framework-Web-Service-Interface/td-p/3421777

4. 工程实战篇

在我日常分享自学操作者框架相关知识心得体会的时候,好多小伙伴问的最多的就是有没有投入实际生产环境中的范例进行借鉴学习,每次我都只能抱歉说没有,主要原因有下面几点:

  1. 实际工程生产的范例往往多数有商业属性,受单位限制,不便于开源分享。

  2. 即使开源范例,由于大家各自的业务专长领域不同,嵌入业务逻辑的操作者框架应用系统范例往往也不能很好的被大家学习理解,比较典型的状况就是LabVIEW系统自带的“反馈式冷凝器”和“咖啡馆”的示范范例采用了非常通用常见的业务逻辑,大多数学习者都还连呼好复杂,难以下手!

  3. 实际工程案例往往都要与各种第三方的硬件设备程控互动,如果没有模拟仿真的功能,往往范例无法正常运转,很容易造成学习者的挫折感。

  4. 即使以上的条件都能满足,大多数的实际工程范例都没有辅助支持性文档,也很难进行持续性学习。

  5. 大多数的工程实战案例的技术水准都一般般,不但不能当作范例进行学习,反而是作为代码审查的反例需要提高。

所以,综上所述。最好的工程实战范例还是来源于官方出品的演示范例,在论坛中比较好的范例主要有下面三个,如果勤学苦练,学会弄懂后,一般常规的多任务并发开发场景自然是信手拈来,不在话下。

4.1 Actor framework for data acquisition and data process pattern

这是操作者框架技术讨论论坛中的一个关于数据采集和处理的常规模式编程的详细讨论,在该一系列讨论中多方开发人员针对不同的消息路由处理流程和模式,以流程图、概念图和小型试验样例进行的技术讨论和展示,非常适合初学者在刚刚使用操作者框架开发类似多任务数据采集和处理场景时,予以借鉴参考。

https://forums.ni.com/t5/Actor-Framework-Discussions/Actor-framework-for-data-acquisition-and-data-process-pattern/td-p/3982394

图片

4.2 Windows 8 Style UI demo

这是NI公司的一位开发者为大家开源的操作者框架的界面UI库。

图片

大多数LabVIEW开发者多数都不具体工业界面设计的能力,可以实现业务逻辑功能,但是往往界面比较简陋,该套UI库非常适用于多任务并发的数据采集和处理程序,主流暗黑主色系、平面化控件设计、灵动的界面滑动效果、复杂的主从界面切换功能。绝对是一旦拥有不在别无所求的精品界面范例!

具体的网页讨论和源代码链接如下:

https://forums.ni.com/t5/Actor-Framework-Discussions/Using-AF-in-an-advanced-UI-demo/td-p/3377772

https://forums.ni.com/t5/UI-Interest-Group-Documents/Windows-8-Style-UI-demo/ta-p/3496737

该UI框架首先应用操作者框架开发了一套MVC模式的Win8uiFramework的类库,并再在该类库基础上扩展开发了Win8uiDemo的具体应用。

图片

图片

4.3 Measurement Abstraction Plugin Framework with Optional TestStand Interface

Measurement Abstraction Plugin Framework 工程实战范例,是目前本系列范例文章所有全部范例中,最为复杂的工程实战范例。

该范例不但涉及到各种测量设备硬件驱动如DAQmx,还与其它的NI全家桶软件如TestStand 、Systemlink(Skyline 、AMQP)深度绑定到一起,并且引用了大量的OpenG的开源库包软件VI,特别提醒大家,安装时需要一个大硬盘空间和科学畅通的网络环境,因为好多的OpenG的库包是存储到了美国Amzon的S3云存储平台上,导致国内被强无法正确下载。

图片

作者使用操作框架开发一套插件化(Plugin)的动态可扩展的灵活实用的架构应用程序,并且演示了如何与TestStand非操作者系统如何协调界面接口调用。

图片

其作者 Elijah Kerry 也是LabVIEW面向对象编程开发社区的大神级别的人物,在技术论坛上分享了诸多的面向对象技术技术、设计模式和操作者框架等方面的知识内容。

图片

此外,作者还在其自己的专业博客中(https://ekerry.wordpress.com/),对该系统MAL(Measurement Abstraction Library)的不断地逐年演化改善,以及插件化架构结构的开发与代码发布形式,都给出了详细明确的技术指导说明。

https://ekerry.wordpress.com/2013/09/28/measurement-utility-3-0-now-available-for-download-and-some-thoughts-on-debugging-a-large-actor-framework-system/

后继两篇内容的题目分别是:

  • 第六篇、VIPM范例

  • 第七篇、范例总动员

再次感谢您的支持与鼓励,让我们在学习的道路上持续进步。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值