42、云应用开发:命令行界面与公共 API 的实用指南

云应用开发:命令行界面与公共 API 的实用指南

1. 多平台移动应用构建示例

Ionic 网站展示了一个使用工具包构建多平台移动应用的简单示例,该工具包可最大化复用通用代码。一个团队使用 Ionic 为 2021 年企业应用峰会(EAS)构建了一款应用,此应用具备会议软件的标准功能,如让参会者浏览演讲、制定日程以及为感兴趣的演讲设置提醒。由于采用 Ionic 构建,内容不仅能在安卓和 iPhone 设备间共享,还能与网站共享,因为大部分内容以单页应用形式实现。

2. 命令行界面(CLI)
2.1 CLI 的需求背景

当开发云应用(如云原生应用)时,用户需要客户端应用与云应用交互。若用户希望以重复或自动化方式操作,如批量加载、批量更改或按计划执行活动,传统的图形用户界面(WIMP 范式)可能存在局限性。例如,在活动报名场景中,若仅依赖移动应用或浏览器应用,在截止时间前检查报名情况并取消活动的功能可能无法实现,除非开发者添加此功能,且使用 API 也并非易事。

2.2 构建 CLI

为解决上述问题,需构建命令行界面(CLI),它能让用户在操作系统命令行调用云应用的 API。CLI 通常由对应应用主要功能的单个 CLI 命令组成。其架构包含两部分:实现命令的 CLI 客户端和被命令调用的云应用,用户需在客户端操作系统安装 CLI 客户端。

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(CLI 客户端):::process -->|调用| B(云应用):::process
2.3 CLI 的调用方式与优势

CLI 可通过脚本、单元测试工具或自动化平台(如机器人流程自动化工具)调用云应用功能。良好的 CLI 关键在于组合性,有助于实现管道与过滤器架构。每个 CLI 命令是后端业务逻辑与脚本代码的连接点,也可与调度器、测试代码等交互。

优势 说明
简单性 构建简单,最简单的 CLI 只需所有语言都支持的 stdin 和 stdout 库
资源消耗 相比图形应用,CLI 应用消耗的计算和网络资源更少
易测试性 输入输出为文本,便于制定测试用例和评估响应
组合性 可在操作系统层面组合,利用标准操作系统功能
2.4 CLI 的缺点与应对
缺点 说明 应对方法
安装 需在用户设备安装 Linux 可用 apt、yum 等包安装器,Mac 可用 homebrew
用户友好性 不直观,需参考文档 提供详细文档
可发现性 用户日常不常使用命令行,应用不易被发现 提供搜索索引的文档
2.5 CLI 示例
  • Multics 和命令行的起源 :1961 年 MIT 的 Fernando Corbato 展示的实验性分时系统(ETSS)是命令行的早期尝试,1964 年的 Multics 操作系统开发出首个成熟的 CLI,它启发了 Unix 及后续所有命令行界面。
  • cURL :Daniel Stenberg 的 cURL 是 CLI 实用工具的典范,用于通过 URL 获取和发送数据,可用于测试网站、REST API、数据传输等,已内置在 macOS 和 Windows 操作系统中,还应用于 NASA 的 Ingenuity 火星直升机软件。
  • 超大规模云服务提供商的 CLI :AWS、Azure、IBM Cloud 和 Google Cloud 等云服务提供商都提供 CLI,使用户能从远程系统创建和管理服务实例,但不同接口类型在实际应用中可能存在延迟、差异或覆盖不全的问题。
3. 公共 API(Public API)
3.1 公共 API 的需求背景

企业与第三方(商业伙伴、政府实体等)合作时,在公共 API 方面常出现两种极端情况:一是直接将内部微服务作为 API 公开,会使第三方受内部服务变化影响;二是 API 长期不变,导致企业内部工作繁琐且错失机会。

3.2 构建公共 API

为解决上述问题,需构建独立服务实现面向外部的公共 API,供第三方应用访问云应用功能。公共 API 有两种情况需考虑:支持企业外部应用和企业内部独立开发的应用。公共 API 又可细分为合作伙伴(封闭)API 和公共(开放)API,它们都应被视为产品,需考虑对外部用户社区的影响。

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(第三方应用):::process -->|调用| B(公共 API):::process
    B -->|调用| C(内部服务):::process
3.3 公共 API 与 Dispatcher 的区别
  • 访问粒度 :公共 API 通常提供更粗粒度的访问,以限制第三方对系统的功能使用,如行政接口和细粒度数据访问通常不包含在公共 API 中。
  • 稳定性 :公共 API 需要更稳定,因为更改可能破坏现有第三方应用,而 Dispatcher 的 API 可随客户端应用同步演进。
3.4 公共 API 的优势与问题
优势 说明
新商业机会 可能催生新应用,开拓新市场和盈利途径
创建生态系统 吸引外部开发者,扩展应用功能和影响力
问题 说明 解决方法
版本控制 需控制 API 随时间的演进,考虑维护多个版本 命名 API 包含版本号或在元数据中包含版本号
安全问题 公开 API 会带来安全风险,如注入攻击、中间人攻击和 DDoS 攻击 采用零信任安全方法
3.5 公共 API 与 API 网关的区别

公共 API 应是独立设计的实体,与 API 网关不同。API 网关虽可用于安全、管理和跟踪公共 API 使用情况及发布文档,但将公共 API 直接构建在 API 网关中存在局限性,如锁定特定供应商实现、限制适应性等。

3.6 公共 API 示例

“Bezos 指令”强调了公共 API 的重要性。2002 年左右,亚马逊 CEO Jeff Bezos 向开发者发送内部邮件,要求所有团队通过服务接口暴露数据和功能,团队间只能通过接口通信,所有服务接口必须可对外公开。这一文化推动了亚马逊早期 AWS 服务的发展。

4. 开发顺序建议

在构建复杂业务流程的用户交互时,开发顺序是一个值得考虑的因素。通常,合适的开发顺序应为 API、CLI 和 GUI。原因如下:
- 优先开发 API :首要任务是开发构成业务逻辑的后端服务器服务,即 API。这是整个系统的基础,决定了系统的核心功能。
- 构建 CLI 进行测试 :完成 API 开发后,构建一个简单的 CLI 并嵌入最重要的命令。通过使用简单的脚本工具(如 Shell),可以尝试不同的 API 组合,从而发现并解决集成问题。这比直接使用基于 GUI 的自动化工具(如 Selenium)进行测试要容易得多,因为 GUI 测试往往面临更多复杂性。
- 最后开发 GUI :在基本流程构建和测试完成后,再进行用户界面(GUI)的开发。但即使有了 GUI,CLI 仍然可以作为复杂交互组合的脚本替代方案。

开发阶段 说明 优势
API 开发 构建后端业务逻辑服务 确定系统核心功能
CLI 构建与测试 嵌入重要命令,使用脚本工具测试 API 发现并解决集成问题,降低测试复杂性
GUI 开发 基于已测试的流程开发用户界面 提供友好的用户交互,同时保留 CLI 脚本替代方案
5. CLI 与公共 API 的综合应用案例分析

为了更好地理解 CLI 和公共 API 在实际中的应用,我们来看一个综合案例。假设我们有一个云会议应用,它提供会议管理、参会者管理等功能。

5.1 使用 CLI 管理会议
  • 创建会议 :用户可以使用 CLI 命令调用云应用的 API 来创建会议。例如,在 Linux 系统中,使用自定义的 CLI 命令 create-meeting --name "Tech Conference" --date "2024-10-01" --time "10:00:00" 来创建一个名为“Tech Conference”的会议。
  • 查看会议列表 :通过 list-meetings 命令可以获取所有会议的列表,该命令会调用云应用的 API 并将结果以文本形式输出。
  • 取消会议 :使用 cancel-meeting --id 123 命令,根据会议 ID 取消指定的会议。
graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(用户):::process -->|执行 CLI 命令| B(CLI 客户端):::process
    B -->|调用 API| C(云会议应用):::process
    C -->|返回结果| B
    B -->|显示结果| A
5.2 公共 API 支持第三方集成
  • 合作伙伴集成 :会议应用的公共 API 可以让合作伙伴(如活动推广平台)集成会议信息。合作伙伴可以通过公共 API 获取会议列表、会议详情等信息,用于推广活动。例如,活动推广平台可以使用公共 API 中的 get-meeting-details --id 123 接口获取指定会议的详细信息,并在其平台上展示。
  • 政府监管接入 :政府监管部门可以通过公共 API 接入会议应用,获取会议的统计信息,如参会人数、会议时长等。例如,使用 get-meeting-stats --id 123 接口获取指定会议的统计数据。
集成场景 调用的公共 API 接口 用途
合作伙伴集成 get-meeting-details 获取会议详情用于活动推广
政府监管接入 get-meeting-stats 获取会议统计数据进行监管
6. 总结

在云应用开发中,命令行界面(CLI)和公共 API 都具有重要的作用。CLI 以其简单性、低资源消耗、易测试性和可组合性等优势,为用户提供了一种便捷的方式来与云应用进行交互,尤其适用于自动化任务和测试。而公共 API 则为企业与第三方的合作提供了桥梁,能够创造新的商业机会和生态系统,但同时也需要注意版本控制和安全等问题。

在实际开发过程中,遵循 API、CLI、GUI 的开发顺序,可以更有效地构建和测试系统,降低开发成本和风险。通过合理运用 CLI 和公共 API,企业可以更好地满足用户需求,提升系统的灵活性和可扩展性。

未来,随着云计算技术的不断发展,CLI 和公共 API 的应用场景也将不断拓展。例如,在人工智能、物联网等领域,CLI 可以用于自动化部署和管理模型,公共 API 可以实现不同系统之间的数据共享和交互。我们应持续关注这些技术的发展趋势,不断探索其在更多领域的应用可能性。

【博士论文复现】【阻抗建模、验证扫频法】光伏并网逆变器扫频稳定性分析(包含锁相环电流环)(Simulink仿真实现)内容概要:本文档是一份关于“光伏并网逆变器扫频稳定性分析”的Simulink仿真实现资源,重点复现博士论文中的阻抗建模扫频法验证过程,涵盖锁相环和电流环等关键控制环节。通过构建详细的逆变器模型,采用小信号扰动方法进行频域扫描,获取系统输出阻抗特性,并结合奈奎斯特稳定判据分析并网系统的稳定性,帮助深入理解光伏发电系统在弱电网条件下的动态行为失稳机理。; 适合人群:具备电力电子、自动控制理论基础,熟悉Simulink仿真环境,从事新能源发电、微电网或电力系统稳定性研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握光伏并网逆变器的阻抗建模方法;②学习基于扫频法的系统稳定性分析流程;③复现高水平学术论文中的关键技术环节,支撑科研项目或学位论文工作;④为实际工程中并网逆变器的稳定性问题提供仿真分析手段。; 阅读建议:建议读者结合相关理论教材原始论文,逐步运行并调试提供的Simulink模型,重点关注锁相环电流控制器参数对系统阻抗特性的影响,通过改变电网强度等条件观察系统稳定性变化,深化对阻抗分析法的理解应用能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值