24、API 优先开发与 Java 框架介绍

API 优先开发与 Java 框架介绍

1. API 优先方法概述

在当今数字化时代,我们面临着海量的物联网设备、数据、服务和应用。随着物联网传感器和执行器的爆发式增长,数据分析的占比将大幅增加,物理、机械和电气系统都在被数字化并连接起来。同时,Web、企业和云应用也都支持移动访问,这使得应用、设备和信息的访问与使用渠道变得多样化。

企业移动领域非常热门,但存在一些性能要求高的遗留应用。拆解这些应用既耗时又需要专业人才,因此常见的做法是为现有应用添加额外的 API,使其能够对外提供服务。然而,这种方法并非战略上的明智之举。考虑到云基础设施的优化和组织性,新一代应用正直接在云服务器上进行设计、开发和部署。

因此,推荐的方法是先构建 API,再在该 API 之上开发云应用。广泛流传的 API 优先开发策略(https://www.restcase.com/)旨在打造具有前瞻性的 API。这种方法能让软件开发人员清晰自信地完成工作,实现高度先进和高效的开发。接口与实现的分离便于在后续修改代码时不影响应用和服务的访问。

云作为各类软件系统的一站式 IT 解决方案,单体和大型应用正被云化,以实现创新、变革和转型。全新的应用大多以云原生应用的形式启动和实施。云原生代码完成后会被存入代码仓库,然后与必要的代码段进行构建和集成,形成完整的应用。接着会对应用进行重要测试,确保代码能顺利通过所有关卡。最后,通过持续交付和部署工具将经过精心整理和优化的代码交付到已配置的 IT 资源上,启动部署流程。

2. API 优先开发的优势

传统的开发流程是按顺序进行的,需求获取、服务设计、开发、调试、交付、部署和退役通常是同步进行的。质量控制和保证团队要等代码完全开发和集成完成,原型准备好后,文档团队才开始准备 API。如果出现改进、修正或添加需求,设计和开发团队又要重新工作,这浪费了大量的人才和时间。

而如果在与项目发起人和最终用户协商后确定了拟议服务的 API,软件的构建和部署时间将大幅减少。API 优先开发过程推荐所有团队进行并行开发,软件可以独立发布,各团队之间的依赖关系也大大减少。具体流程如下:
1. 首先创建并模拟 API。
2. 后端、前端和测试团队开始使用模拟的 API 进行工作。
3. API 最终确定后,所有团队可以轻松切换到生产或预发布 API。

这种做法节省了大量的开发时间。RestCase 是一个基于云的 API 开发平台,它允许开发人员使用直观的基于浏览器的界面协作创建 REST API,并自动生成文档、测试和模拟。通过创建 API 模拟,开发人员可以立即进行调用,无需等待 API 的实际开发和部署,从而消除了各开发团队之间的障碍。

3. 以 API 优先方式构建服务的好处

专家广泛推荐以 API 优先的方式构建服务,这是一种最佳实践。通过先定义和设计 API,可以做好很多事情:
- 项目发起人能全面了解正在开发的系统。
- 更容易进行更改和调整。
- 软件开发人员可以自信地进行开发和测试任务。
- 销售人员可以向潜在客户详细解释软件系统的细节。
- 可以先进行 API 测试,简化 API 管理。在这个日益依赖 API 的世界里,一切都在配备一个或多个 API,以便根据不断变化的需求被发现、绑定和使用。

4. RESTful 服务与 API 的重要性

RESTful 服务和 API 的简单性和模块化特点使得软件开发能够产生高度灵活和具有前瞻性的应用。随着数字资产的 Web 和云支持变得更加重要,REST 理念的作用和责任在未来必将增加。我们希望将日常环境深度连接起来,拥有更多认知环境的梦想也在不断升温。因此,充分利用 RESTful 服务的独特和内在能力对于实现数字化转型至关重要。

5. 框架、标准语言和工具包概述

软件框架是软件应用的生命线,它们提供扩展功能和许多现成的实现,使应用开发人员无需处理软件的每个编码细节,而是可以专注于利用框架提供的现成功能、库、API 和模型来构建更快、更智能的业务能力。

接下来将介绍几个流行的框架,包括它们支持的编程语言、功能、标准和特性,如占用空间、适应性、云部署友好性和开发便捷性等。目的是为读者介绍一些在选择适合自己 API 开发需求的框架时可能有用的框架,但这并不是一个详尽的列表,也无意对它们进行比较。

6. 技术要求

由于将讨论基于 Java、Python 和 Go 编程语言的几个著名框架,因此对一种或多种编程语言有基本的了解将使读者能够使用自己喜欢的框架启动 RESTful API 开发。本文既可以作为参考资料,也可以作为对这三种编程语言有一定了解的读者的技术指南。

7. 框架的核心特性

框架包含软件库、API、脚手架、AJAX、缓存、安全、编译器等多种元素。在选择框架时,以下核心特性至关重要:
- 简单、一致、易于适应且实现速度快。
- 具有分层架构,设计和文档完善。
- 进行了合理的权衡。
- 包含可重用库和借用的历史库。
- 集成设计并具备进化能力。

下面将介绍几个基于 Java 的框架,了解它们在设计、占用空间、文档和适应性方面的能力,以及它们的优缺点。

8. Spring Boot 框架

Spring Boot 是最受欢迎的开源 Java 框架之一,为许多 Java 开发人员提供了一个优秀的平台,可快速构建和部署基于 REST 的应用。

8.1 Spring Boot 的基本设计原则
  • 为所有 Spring 开发提供极快且广泛可用的代码、可重用库和样板代码。
  • 有明确的观点,鼓励创新思维,为开发人员提供根据自身需求进行定制的方式,并挑战默认设置。
  • 提供适用于各类项目的非功能需求特性变体,可用于监控(如安全、嵌入式服务器、健康检查、指标和外部化配置)。
  • 无需代码生成机制,也不需要 XML 配置。
8.2 Spring 的核心特性
  • Spring 应用 :提供了便捷的应用启动方式。
  • 外部配置 :通过 YAML、环境变量或命令行参数,使同一应用代码能在不同环境中运行。
  • 配置文件 :将应用配置的不同部分进行隔离,使其仅在特定环境中可用。
  • 日志 :提供了 Apache Commons Logging 的开箱即用功能,但不限制使用其他日志框架。
8.3 Spring 与数据库的集成
  • SQL 数据库 :Spring 为 SQL 数据库提供了广泛的支持。通过 JdbcTemplate 进行对象关系映射(ORM),结合 Spring Data 还能提供创建存储库的额外功能。
  • NoSQL 技术 :基于 Spring 的数据访问编程模型 Spring Data 为 Spring 框架提供支持,可快速轻松地连接各种 NoSQL 技术。
8.4 Spring 的消息集成

Spring 消息框架极大地简化了与消息系统的集成。无论是使用 JmsTemplate 进行简单的 JMS 消息传递,还是支持 ActiveMQ,亦或是使用 AMQP 进行高级消息传递或集成 Apache Kafka,Spring 框架都提供了简单的方法。

8.5 Spring 的自动配置扩展

在许多实际场景中,我们需要开发共享库,并创建特定的配置类作为模块(JAR)。将这些模块添加到应用的类路径中可以加快开发速度,因为无需定义自动配置类中包含的特定 Bean。例如,LDAP、不同数据库源配置或安全配置等。

8.6 编写单元测试和集成测试用例

编写单元测试和集成测试是开发人员的重要实践。Spring 提供了更好的能力来编写单元测试、隔离测试脚本和集成测试。Spring Framework 提供了一些用于测试应用的实用工具和注解。Spring-boot-starter-test 是大多数开发人员喜欢的测试工具,因为它的启动工具导入了 Junit、AssertJ、Hamcrest 和 Mockito。Spring-test 和 Spring-boot-test 是编写集成测试时常用的库,而且 Spring 测试框架还允许我们添加自己的额外测试依赖项。

8.7 Spring Boot 的优点
  • 快速设置、快速开发并可快速投入生产(适用于企业级应用)。
  • 轻松快速地集成安全、ORM 和 JDBC。
  • 嵌入式轻量级 HTTP 服务器。
  • 除 Java 外,还支持 Groovy。
  • 支持 Maven 和 Gradle 构建工具。
  • 模块化,与其他库配合良好。
  • 易于学习,文档广泛且深入。
  • 线上线下都有非常活跃的开发和文档社区。
8.8 Spring Boot 的缺点
  • 版本之间频繁引入新功能和修复缺陷,可能导致兼容性问题。
  • 可能需要使用最新版本。
  • 过多的信息和文档可能会让人感到负担过重。
  • 对于某些人来说,在庞大的框架中查找特定信息可能有困难,这可能会影响快速原型开发。
9. Light 4j 框架

Light 是一个基于 Java SE 开发的云原生微服务平台,其设计目标是实现高吞吐量、低延迟和小占用空间。Light 4j 是一个通用的 Web/API 框架,内置了 OAUTH2、门户、日志、消息和指标等不同的框架。

9.1 Light 4j 的核心特性
  • 旨在支持容器化微服务,支持基于 OpenAPI 规范的 RESTful API 和 GraphQL IDL 的 GraphQL 服务的设计驱动方法,并具有代码生成和运行时模型(用于验证和安全)。
  • 解决了一些技术层面的交叉问题,如审计、负载均衡、认证和健康检查等,使服务或 API 开发人员可以专注于业务逻辑,而无需过多担心这些非功能需求。Light 4j 提供了各种处理逻辑,将非功能需求与业务上下文分离,帮助 API 开发人员专注于业务逻辑的开发。
9.2 Light Rest 4j 框架

Light Rest 4j 是基于 Light 4j 构建的框架,旨在加速 RESTful API 的开发和部署。它有许多围绕 Swagger 2.0 和 Open API 3.0 规范设计的中间件处理程序,包括 Open API 元数据、Open API 安全、Open API 验证器、Swagger 元数据、Swagger 安全和 Swagger 验证器。

9.3 Light - code - gen 工具

我们可以使用支持 OpenAPI 3.0 规范的 Light Rest 4j 框架构建 RESTful API 或服务,并使用名为 light - code - gen 的命令行工具搭建项目。该工具支持 JWT 范围验证和任何服务请求的模式验证。它可以通过简单的 Java 命令行工具、Docker 命令行或作为 DevOps 管道一部分的脚本运行,并且与 Maven 构建工具兼容。

9.4 选择 Light 4j 的理由
  • 基于 Java SE 的框架。
  • 可扩展设计。
  • 低延迟。
  • 小内存占用。
  • 有多个作为插件的处理程序。
  • 开箱即用的 OAuth2 集成(安全优先设计)。
  • 易于与其他框架集成。
  • 内置依赖注入框架。
  • 基准测试表明它是最快的 RESTful 框架。

不过,由于文档不完善,可能存在学习曲线较陡的问题,而且它在市场和行业中较新,生产系统上的反馈还不多。但基于 Light 4j 构建的 Light Rest 4j 框架非常有前景,因其轻量级、低延迟、可扩展性设计、非 J2EE 而是 J2SE 基础以及安全优先设计等特点而受到欢迎。

10. Spark 框架

Spark 是由 Per Wendel 创立的微框架,用于以最小的努力在 Java 中创建 Web 应用。它是一个免费的开源 Java Web 框架,遵循 Apache 2 许可证发布。

10.1 Spark 框架的核心特性
  • 旨在更快速、更轻松地创建 API。
  • 是一个轻量级库。
  • 提供简单的接口,可用于定义路由并将其分发到请求路径对应的函数。
  • 遵循 Java 8 lambda 哲学,用更少的代码创建 Web API。
10.2 用 Spark 创建 API

以下是使用 Spark 创建一个简单的 “Hello World” API 的示例代码:

import static spark.Spark.*;

public class MyHelloWorld {
    public static void main(String[] args) {
        get("/sayhello", (request, response) -> "Hello Reader");
    }
}

通过使用 CURL(curl http://localhost:4567/sayhello),我们可以看到以下请求和响应:

Request: 
GET http://localhost:4567/sayhello 

Response: 
Hello Reader 

这表明当 CURL 发起请求时,Spark 的 lambda 函数被触发,客户端(这里是 CURL)得到静态 lambda 函数的输出。而且,Spark 不仅可以创建简单的 API,还支持查询映射、cookie 和会话、过滤器、重定向、异常和错误处理以及视图和模板等多种功能,可用于编写复杂的 RESTful API。

10.3 Spark 的优点
  • 基于 Java 8 EE 和 lambda 哲学,代码简洁。
  • 促进快速开发。
  • 使应用开发人员能够创建可扩展的 REST API。
  • 快速且轻量级。
  • 非常适合快速原型开发。
  • 由于是 Java EE Servlet API 的轻量级包装,在速度方面表现出色。
  • 简化且有效的路由。
  • 通过提供简单的领域特定语言(DSL)将 API 端点路由到处理程序,提高了开发效率。
  • 支持 Maven 和 Gradle。

综上所述,不同的框架适用于不同的场景和需求。Spring Boot 功能强大且成熟,适合企业级应用开发;Light 4j 具有高性能和安全优先的特点,对于云原生微服务开发有很大优势;Spark 则以其简洁和快速开发的特性,在快速原型开发方面表现出色。开发人员可以根据项目的具体要求选择合适的框架。

API 优先开发与 Java 框架介绍

11. 框架对比

为了更清晰地了解各个框架的特点,下面对 Spring Boot、Light 4j 和 Spark 框架进行对比,具体内容如下表所示:
| 框架名称 | 语言基础 | 设计目标 | 优点 | 缺点 | 适用场景 |
| ---- | ---- | ---- | ---- | ---- | ---- |
| Spring Boot | Java | 为 Spring 开发提供快速、可重用的代码和库,支持多种非功能需求 | 快速设置与开发,易集成,支持多语言和构建工具,社区活跃 | 版本兼容性问题,文档过多,查找特定信息困难 | 企业级应用开发 |
| Light 4j | Java SE | 高吞吐量、低延迟、小占用空间,支持容器化微服务 | 可扩展,低延迟,小内存,内置 OAuth2 等 | 文档不完善,学习曲线陡,生产反馈少 | 云原生微服务开发 |
| Spark | Java 8 EE | 以最少的努力创建 Web 应用 | 代码简洁,促进快速开发,适合原型开发 | - | 快速原型开发 |

从这个对比表格中可以看出,不同框架在语言基础、设计目标、优缺点和适用场景等方面都存在明显差异。开发人员在选择框架时,需要综合考虑项目的规模、性能要求、开发周期等因素。

12. API 优先开发与框架的结合

在 API 优先开发的过程中,选择合适的框架至关重要。以下是不同框架在 API 优先开发中的应用流程:

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A([确定 API 需求]):::startend --> B(选择框架):::process
    B --> C{Spring Boot}:::process
    B --> D{Light 4j}:::process
    B --> E{Spark}:::process
    C --> F(创建 API 接口):::process
    D --> F
    E --> F
    F --> G(后端、前端和测试团队使用模拟 API 并行开发):::process
    G --> H(API 最终确定):::process
    H --> I(切换到生产或预发布 API):::process
    I --> J([完成应用开发与部署]):::startend

在这个流程图中,首先要明确 API 的需求,然后根据需求选择合适的框架。不同的框架在创建 API 接口后,都能支持后端、前端和测试团队使用模拟 API 进行并行开发。当 API 最终确定后,团队可以顺利切换到生产或预发布 API,完成应用的开发与部署。

13. 总结

API 优先开发是一种具有前瞻性的开发策略,它能够显著提高软件开发的效率和质量。通过先定义和设计 API,可以让项目发起人更好地了解系统,软件开发人员更自信地进行开发,销售人员更清晰地向客户介绍产品。同时,不同的 Java 框架在 API 开发中各有优势:
- Spring Boot 凭借其丰富的功能和成熟的生态系统,为企业级应用开发提供了强大的支持。它的自动配置、数据库集成和消息集成等功能,使得开发人员可以专注于业务逻辑的实现。例如,在开发一个大型的企业管理系统时,Spring Boot 可以帮助快速搭建系统架构,集成各种服务。
- Light 4j 以其高吞吐量、低延迟和小占用空间的特点,成为云原生微服务开发的理想选择。它对容器化微服务的支持以及内置的安全机制,能够确保系统在复杂的云环境中稳定运行。比如,在开发一个基于云计算的电商平台的微服务时,Light 4j 可以提供高效的服务。
- Spark 则以其简洁的代码和快速开发的特性,在快速原型开发中表现出色。开发人员可以用少量的代码实现复杂的功能,快速验证项目的可行性。例如,在开发一个新的 Web 应用的原型时,Spark 可以帮助快速搭建出一个可用的版本。

14. 未来展望

随着数字化转型的加速,API 优先开发和 Java 框架的应用将会更加广泛。未来,可能会出现以下趋势:
- 框架的融合与创新 :不同框架可能会相互借鉴优点,进行融合和创新,以提供更强大、更灵活的开发能力。例如,Spring Boot 可能会借鉴 Light 4j 的高性能设计,进一步优化其在云环境中的性能。
- 对新技术的支持 :随着人工智能、物联网等新技术的发展,框架将不断扩展其功能,以支持这些新技术的应用。比如,框架可能会增加对物联网设备数据处理的支持,或者集成人工智能算法进行数据分析。
- 开发体验的提升 :未来的框架将更加注重开发人员的体验,提供更简洁、易用的 API 和工具,减少开发过程中的复杂性。例如,可能会出现更智能的代码生成工具,根据 API 定义自动生成大部分代码。

在这个不断发展的技术环境中,开发人员需要不断学习和掌握新的知识和技能,选择合适的开发策略和框架,以适应市场的需求。无论是 API 优先开发还是选择合适的 Java 框架,都将对项目的成功起到关键作用。希望本文能够为开发人员在 API 开发和框架选择方面提供有价值的参考。

内容概要:本文设计了一种基于PLC的全自动洗衣机控制系统内容概要:本文设计了一种,采用三菱FX基于PLC的全自动洗衣机控制系统,采用3U-32MT型PLC作为三菱FX3U核心控制器,替代传统继-32MT电器控制方式,提升了型PLC作为系统的稳定性自动化核心控制器,替代水平。系统具备传统继电器控制方式高/低水,实现洗衣机工作位选择、柔和过程的自动化控制/标准洗衣模式切换。系统具备高、暂停加衣、低水位选择、手动脱水及和柔和、标准两种蜂鸣提示等功能洗衣模式,支持,通过GX Works2软件编写梯形图程序,实现进洗衣过程中暂停添加水、洗涤、排水衣物,并增加了手动脱水功能和、脱水等工序蜂鸣器提示的自动循环控制功能,提升了使用的,并引入MCGS组便捷性灵活性态软件实现人机交互界面监控。控制系统通过GX。硬件设计包括 Works2软件进行主电路、PLC接梯形图编程线关键元,完成了启动、进水器件选型,软件、正反转洗涤部分完成I/O分配、排水、脱、逻辑流程规划水等工序的逻辑及各功能模块梯设计,并实现了大形图编程。循环小循环的嵌; 适合人群:自动化套控制流程。此外、电气工程及相关,还利用MCGS组态软件构建专业本科学生,具备PL了人机交互C基础知识和梯界面,实现对洗衣机形图编程能力的运行状态的监控操作。整体设计涵盖了初级工程技术人员。硬件选型、; 使用场景及目标:I/O分配、电路接线、程序逻辑设计及组①掌握PLC在态监控等多个方面家电自动化控制中的应用方法;②学习,体现了PLC在工业自动化控制中的高效全自动洗衣机控制系统的性可靠性。;软硬件设计流程 适合人群:电气;③实践工程、自动化及相关MCGS组态软件PLC的专业的本科生、初级通信联调工程技术人员以及从事;④完成PLC控制系统开发毕业设计或工业的学习者;具备控制类项目开发参考一定PLC基础知识。; 阅读和梯形图建议:建议结合三菱编程能力的人员GX Works2仿真更为适宜。; 使用场景及目标:①应用于环境MCGS组态平台进行程序高校毕业设计或调试运行验证课程项目,帮助学生掌握PLC控制系统的设计,重点关注I/O分配逻辑、梯形图实现方法;②为工业自动化领域互锁机制及循环控制结构的设计中类似家电控制系统的开发提供参考方案;③思路,深入理解PL通过实际案例理解C在实际工程项目PLC在电机中的应用全过程。控制、时间循环、互锁保护、手动干预等方面的应用逻辑。; 阅读建议:建议结合三菱GX Works2编程软件和MCGS组态软件同步实践,重点理解梯形图程序中各环节的时序逻辑互锁机制,关注I/O分配硬件接线的对应关系,并尝试在仿真环境中调试程序以加深对全自动洗衣机控制流程的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值