写点什么

如何开发 LAXCUS 分布式应用软件(三):编写终端软件

  • 2022 年 5 月 11 日
  • 本文字数:1791 字

    阅读完需:约 6 分钟

如何开发 LAXCUS 分布式应用软件(三):编写终端软件

前面两篇分别介绍了 Laxcus 分布式操作系统的体系结构和 Laxcus 分布式应用软件的主要组成元素,这一篇开始,咱们正式介绍 Laxcus 分布式编程规范流程和注意事项。


闲话不说,咱们直奔主题,还是按照 Laxcus 分布式应用软件的三个运行区间:终端、边缘端、云端来介绍。因为篇幅会较长,本着节约各位开发者看官时间、不影响阅读体验的原则,咱们也分成三段来说,本篇首先介绍终端软件编程。在阅读本文时,各位开发者看官应该具备基本的 Java 编程知识,另外也建议浏览下 Laxcus 分布式操作系统内置各种命令和分布式软件开发包(DSDK)的文档,最好还能使用过 Laxcus 分布式操作系统,这样能够提高您的感性认识,加强理解。


命令帮助窗口


看过上一篇的开发者应该知道,终端在 Laxcus 分布式应用体系的定位是实现人机交互的输入输出,交互 UI 分为字符界面和图形界面两种。从长期的用户反馈看,开发者们大多在编写图形用户界面的应用软件,开发字符界面应用软件的人极少,所以咱们抓大放小,本篇就忽略字符界面编程介绍,重点讲讲编写终端图形界面的编程工作。


终端编程需要首先从“main”函数说起,上篇说过,Laxcus 分布式应用软件的终端界面采用 Java 语言开发,它的入口是“public staitc int main”静态函数,和其它平台 Java 应用不同的是,Laxcus 终端 main 函数需要返回一个整数值(int),而其它平台 Java 应用是“public static void main”,终端 main 函数返回值代表了启动成功或者失败,0 表示成功,负数为失败,Laxcus 分布式操作系统有一个错误故障码表,如果不确定故障就返回-1,不允许有大于 0 的正整数。Laxcus 终端编程的这个特点,请开发者特别注意。


图形界面有两个重要的基础类:LightFrame 和 LightDialog,前者是框架窗口,即桌面上显示的主窗口;后者是对话窗口,打开时会绑定框架窗口,和其它图形桌面的对话窗口一样,Laxcus 桌面的对话窗口也分为模态/非模态两种。LightFrame 和 LightDialog 都继承自 LightForm 类,LightForm 是一个受保护类,不允许开发者使用,所以开始用到任何一个图形窗口时,只能从 LightFrame 和 LightDialog 派生。框架窗口和对话窗口都支持系统的皮肤自动切换功能。


框架窗口基础类:LightFrame


对话窗口基础类:LightDialog



LightFrame和LightDialog界面皮肤随系统感知切换


LightFrame 和 LightDialog 都是抽象类,有需要用户实现的抽象方法。LightFrame 有两个抽象方法:“release0”,“release1”。LightDialog 有一个抽象方法:“showDialog”。


LightFrame的抽象方法


release0 方法释放框架窗口关闭前的资源,如关联的对话窗口。release1 方法用来释放框架窗口关闭后的非窗口资源,比如线程和各种冗余数据,断开与云端、边缘端的网络通信和 RPC 的工作,也建议在 release1 处理。


LightDialog的抽象方法


被LightDialog.showDialog调用的方法


LightDialog 的 showDialog 抽象方法需要开发者实现,功能是打开对话窗口,方法中指定两个参数:1. 父类窗口句柄,它可以是图形桌面句柄或者 LightForm 类的子类句柄,2. 模态/非模态的布尔值。如果以模态方式打开,showDialog 必须有一个返回值,返回值允许开发者自行定义和解释,非模态方式打开时,返回值是一个空指针。根据模态/非模态选项,showDialog 中可以直接调用“showModalDialog”和“showNormalDialog”方法,它们都是保护类型,只能被 LightDialog 子类调用。




Laxcus桌面的系统对话框窗口


目前基于 Laxcus 桌面上显示的窗口组件,都是从 LightDialog 派生而来,比如文件对话窗口、云目录对话窗口、字体对话窗口、颜色选择窗口。其它图形组件,比如按纽、文本框、复选按纽,可以使用 Laxcus 分布式操作系统 API 提供的,也可以使用 Java Swing 组件。Laxcus 桌面对 Java Swing 组件无缝支持。


除了图形人机交互界面之外,在底层运行环境,终端与边缘端和云端的远程交互,有两种方式,一种是通过“PlatformKit.findListeners”方法调用“CommandDispatcher”接口,把命令提交给系统,再由系统分发处理。指令可以是 Command 子类,也可以是 Command 子类的字符串形式,字符串会由系统来解析和生成 Command 子类。另一种是使用 RPC,动态生成远程连接句柄,提交给边缘端。前者完全由系统提供,开发者只负责输入参数。后者由系统定义接口,需要开发者实现各种细则。


第一种是我们推荐使用方式,因为系统已经开发者需要的各种功能,以及底层的网络通信和分布式处理过程全部封装起来,开发者只需要实现参数和指令的输入输出即可。第二种因为需要开发者自已实现大部分功能,拥有更多的灵活性。但是这种编程需要开发者有足够丰富的编程经验,对于初次接触编程工作的开发者,不建议使用。


CommandDispatcher接口


以上是终端软件主要的编程规范和注意事项,本篇介绍完毕,下一篇继续介绍边缘端软件的编程和注意事项。

发布于: 刚刚阅读数: 4
用户头像

LAXCUS分布式操作系统应用软件设计开发交流 2020.10.14 加入

LAXCUS是新一代基于集群架构的分布式操作系统,聚合硬件资源,支持海量用户共享使用。其上运行分布式应用软件,做为人机交互的入口和载体,处理各种大规模存储及计算应用业务。官网:https://www.laxcus.com/

评论

发布
暂无评论
如何开发 LAXCUS 分布式应用软件(三):编写终端软件_集群架构_LAXCUS分布式操作系统_InfoQ写作社区