百摩网
当前位置: 首页 生活百科

脚手架的搭建与开发(什么是软件开发脚手架)

时间:2023-07-26 作者: 小编 阅读量: 3 栏目名: 生活百科

使用脚手架的应用,仅需通过简单的注解和配置就可以具备健康状态检查、生产环境就绪、可观测等基本服务能力。在实际的软件工程场景中,脚手架的使用正是为了我们避免重新造轮子。可以说,脚手架工程可以为开发人员屏蔽繁杂的数据存储引擎底层差异和具体工作细节,提升了开发效率,降低了开发难度。Vue框架对于前端开发人员来说,Vue无疑是一套简单的、易于使用的构建用户界面的前端脚手架。

微服务本身是一种架构风格,也是指导组织构建软件的一系列最佳实践集合。然而,业务团队在拆分应用后,会产生更多细粒度服务,并面临这些服务在分布式网络环境中的复杂性。如何专心实现业务逻辑而不陷入微服务架构的技术细节,对开发者来说是一大难题。

本章将介绍脚手架的概念,并介绍JVM环境下在技术成熟度、架构完整性、生态活跃度等方面都占据优势的微服务脚手架项目:SpringBoot。

脚手架介绍

什么是脚手架

脚手架是一种用在建筑领域的辅助工具,或者说是为了保证各施工过程顺利进行而搭设的工作平台,有兴趣的读者可自行查看维基百科上的定义。

对应到软件工程领域,脚手架可以解释为帮助开发人员在开发过程中使用的开发工具、开发框架,使用脚手架你无须从头开始搭建或者编写底层软件。下面的“脚手架”定义来自Stack Overflow,更加偏向于应用服务框架使用的一种编程思想或者说编程范式(供参考)。

脚手架:是一种元编程的方法,程序员编写一份规格说明书(Specification),用来描述怎样去使用数据库,然后由编译器脚手架根据这份规格说明书生成相应的代码,进行增、删、改、查等数据库的操作,在脚手架上更高效地建造出强大的应用。

为什么需要脚手架

为什么软件开发需要脚手架呢?我们通过软件开发的一些基本原则看一下脚手架对软件工程的重要作用。

● 复用原则(Reuse Principle):现在我们推崇的是极致化的编程体验,缩短的开发时间、大量的开发任务、支持需求的变更、高频率的应用服务交付,这些都给软件开发人员带来了前所未有的压力。其中,软件复用技术被公认为解决这些问题的行之有效的方法。从计算机软件编程的发展历史来看,从面向过程的编程语言到面向对象的高级编程语言的广泛使用,是软件复用技术进步的体现。从对象的复用到更大的组件复用,再到如今的框架的复用、服务的复用,都是在利用他人的优秀成果来放大你的工作价值。当一个新手使用脚手架时,对于一个具体问题,可以套用现成的解决方案加以扩展。使用脚手架的应用,仅需通过简单的注解和配置就可以具备健康状态检查、生产环境就绪、可观测等基本服务能力。对于一个业务逻辑问题,可以复用已有的逻辑,一步步迭代,敏捷开发。

● DRY原则(Don't Repeat Yourself):DRY原则直译过来就是“不要重复你自己”。这一原则和复用原则类似,强调尽量在项目中减少重复的代码行、重复的方法、重复的模块。其实,软件设计原则和模式最本质的思想都是“消除重复”。

我们经常提到的重用性和可维护性其实是基于减少重复这一简单而重要的思想的。DRY原则意味着系统内的每一个部件都应该是唯一的,并且是具有明确含义的(不模糊的)。我们可以通过应用职责单一、接口隔离等原则尽量拆分系统、模块、类和方法,使每一个部件都是职责明确并且可重复使用的。

● 开闭原则(Open Close Principle):开闭原则中的“开”就是指对功能的扩展是开放的,“闭”是指对于原有代码的修改是封闭的。通俗一点讲,软件系统通常是由各种模块组成的,软件系统在增加一项新的功能时,应该在不修改现有代码的基础上操作。实现开闭原则的关键就是“抽象”,从微观的角度讲,开闭原则适用于一个业务模型的类的设计,把系统内的所有可能行为抽象为一个抽象底层,在这个抽象底层中规定需要提供的方法接口,具体实现类通过集成、代理、委托的方式,扩展实现新的行为或者新的功能。从宏观的角度讲,我们说开闭原则就是将公共模块、开发约定、最佳技术实践经过共享、提炼沉淀到封闭的底层技术基座;而将变化频繁的业务模块、独特的功能逻辑通过继承、组合和集成的方式实现对扩展的开放。

不要重新造轮子

不要重新造轮子(Stop Reinventing The Wheel),这个原则可以说是软件开发里的“金科玉律”。在实际的软件工程场景中,脚手架的使用正是为了我们避免重新造轮子。如果你不借助已有框架或者工具,不仅不会提升开发效率,还会将自己陷入重新造轮子的风险中。这里举一个发生在本人参与的实际项目中的血淋淋的案例。

我们在一个服务治理项目中需要在数据持久层实现一个通用的数据存储接入组件,初衷是降低应用接入不同数据存储引擎的复杂性,屏蔽使用者对不同持久层的感知差异,使开发者通过简单的配置就能适配不同的数据类型。另外,因为期望完全掌握对持久层的控制,以及实现深度定制化的数据转换功能,所以我们并没有使用Spring框架,而是走上了自研持久层的道路。如下图所示是自研持久层的UML框架图。

我们分别对接了MySQL、MongoDB、OpenTSDB、HBase等数据源。系统从架构设计到落地花费了大概两个月的时间,还不包括后期的测试、对接、调试、修复Bug至少一个月的磨合期。然而,由于人员、经验、项目周期等各种因素,最终自研持久层框架的效果并没有达到预期,后期在与业务对接的过程中还出现了各种技术和业务适配问题。

在经过一番技术调研后,我们决定逐渐使用Spring Data替代原有的自研持久层框架。经过项目的实践后,我们发现在业务的需求满足性、易用性、开发效率、业务稳定性等各个方面,Spring Data都具备压倒性的优势,它不仅可以完全满足业务和技术上的需求,而且可以简化我们的开发工作、显著提升工作效率。二者的复盘对比如下表所示。

Spring Data项目通过使用对象的语义可以让我们更方便地操作不同类型的数据。它将应用的骨架部分通过“抽象”提取出来,形成了一套系统的开发范式和行为模式。Spring Boot脚手架也为自定义的复杂查询、修改操作提供了扩展的Repository类和自动化配置,使添加定制化的扩展方法更加轻松方便。我们只需要理解Spring为我们提供的操作API接口,就可以实现复杂的查询等业务逻辑。

Spring Data将我们的数据持久层框架进行了进一步的封装,开发者通过简单的注解,就可以实现将不同类型数据放到不同持久层集合的存储映射操作。可以说,脚手架工程可以为开发人员屏蔽繁杂的数据存储引擎底层差异和具体工作细节,提升了开发效率,降低了开发难度。除非你是这个领域的专家,或者没有现成的软件脚手架能够满足你的需求,否则请停止“愚蠢地重复造轮子”的行为。

常用脚手架

下面列举一些软件开发中经常使用的脚手架,看一下如何通过脚手架提高我们的开发效率。

Vue框架

对于前端开发人员来说,Vue无疑是一套简单的、易于使用的构建用户界面的前端脚手架。根据Vue的官网说法,Vue是一套构建用户界面的渐进式的JavaScript框架。与其他重量级框架不同的是,Vue采用自底向上的增量开发的设计,Vue的目标是通过尽可能简单的API实现响应的数据绑定和组合的视图组件。

vue-cli脚手架构建工具,可用于快速搭建大型单页应用。该工具提供“开箱即用”的构建工具配置,带来了现代化的前端开发流程。

只需几分钟即可创建并启动一个带热重载、保存时静态检查及可用于生产环境的构建配置的项目:

要创建基于Webpack模板的项目,首先我们选定目录,然后在命令行中把目录转到选定的目录即可,可以使用下面的命令:

Maven

Maven是一个跨平台的项目管理工具,是服务于Java平台的项目构建、依赖管理、项目信息管理工具。同时使用Maven可以规范项目骨架及包层次结构、命名配置文件、生成代码原型等。

Maven提供了archetype插件来帮助开发人员快速勾勒出项目的骨架,要使用本地Maven仓库中的脚手架创建新项目,直接执行如下Maven命令,根据提示依次输入groupId、version、package信息即可:

Maven自动化构建简化了开发人员手动构建工程的过程,规范了项目的构建过程。Maven自动化构建流程如下图所示。

Netty

Netty是JBoss提供的一个Java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可用性的网络服务器和客户端程序。在Java世界中还没有Netty框架的时候,Java自带的NIO非常复杂,并且还会出现Epoll Bug(代码缺陷),这个Bug会触发Selector空轮询,导致CPU的使用率达到100%。Netty的解决方式是,在N次空轮询后自动关闭Selector,避免了原生NIO的空轮询问题。而且Netty有很好的线程模型和内存管理框架,如下图所示是Netty Reactor工作架构图。

Java EE

Java EE的全称是Java 2 Platform Enterprise Edition,它是在SUN公司领导下,多家公司参与共同制定的企业级分布式应用程序开发规范。

Java EE技术由一系列技术规范和技术组件组成,包括RESTfulWeb Server(JAX-RS)、Jersey Rest框架、Java Servelt、JMS、EJB等。通常可以把满足这些标准的业务应用部署在Tomcat、JBoss等Web服务器上运行。

DropwizardDropwizard只需通过简单配置就能让你的类提供RESTful服务。

Dropwizard是一个微服务框架,是各项技术的一个集成封装,它包含以下组件:

● 嵌入式Jetty:一个应用程序被打包成一个jar文件,并使用自己嵌入的Jetty容器。除此之外,无任何其他war文件和外部Servlet容器。

● JAX-RS:Jersey,用来写基于REST的Web服务。

● JSON:REST服务数据传递处理全部用JSON,使用Jackson库。

● 日志:使用Logback和SLF4。

● 数据库:使用Hibernate集成ORM框架。

● 指标:使用Metrics作为指标度量工具,在Java代码中嵌入Metrics代码,可以方便地对业务代码的各个指标进行监控,同时Metrics能够很好地跟Ganlia、Graphite结合,方便地提供图形化接口。

在微服务架构领域,Dropwizard可以说是早期脚手架的一个代表,然而Spring Boot青出于蓝而胜于蓝,在Spring强大和成熟的技术生态下,Spring Boot展现出来的特性更加优雅,也更加契合当前微服务架构的理念,下一节我们将正式开始Spring Boot之旅。

本文给大家讲解的内容是微服务架构深度解析:什么是软件开发脚手架? 为什么需要脚手架?常用的脚手架有哪些?
  1. 下篇文章给大家讲解的是微服务架构深度解析:SpringBoot启动快速搭建、自动流程进阶、自动装配机制、功能扩展点详解
  2. 觉得文章不错的朋友可以转发此文关注小编;
  3. 感谢大家的支持!
    推荐阅读
  • 收到礼物惊喜心情句子(让人心情舒畅)

    收到影迷寄来的礼物,喜欢卡上那句话眼里有光,特美愿这道光永不磨灭,我来为大家讲解一下关于收到礼物惊喜心情句子?愿这道光永不磨灭。从澡堂出来发现已经满天的雪花了有种惊喜好开心像是突然收到了一份礼物一路很开心的回来了。再深的记忆也敌不过一世的时间,在长的时间也敌不过错过的遗憾。爱情确不是人生的唯一,但好的爱人可以是好的朋友好的知己,拥有了自己对的那个人,就等于拥有了很多。

  • 红色裤子搭配什么色的卫衣好看(红色卫衣配什么颜色的裤子好看)

    look3红色叮当猫卫衣灰色百褶短裙椰子鞋红色叮当猫卫衣搭配tb百褶裙,Gucci今年早春的款式也太好看了,这件叮当猫卫衣颜色太正了,真的超级显白,而且完全不挑人穿,正面的图案看起来也是超级可爱又很亮眼。下面搭配的是tb的经典款百褶裙,像卫衣搭配短裤,卫衣搭配百褶裙都是非常经典的搭配方式,很显身材不会出错,还有点学院风,乖乖女的感觉。

  • 唐悠悠是谁演的(饰演唐悠悠的演员)

    跟着小编一起来看一看吧!邓家佳,原名邓嘉,1983年5月17日出生于四川省内江市,中国内地女演员,毕业于中国传媒大学表演系本科。2008年,在古装喜剧电影《十全九美》中饰演南宫燕,2010年,出演电视剧《爱情公寓2》,饰演唐悠悠。2012年,主演都市喜剧《爱情公寓3》。2013年,参演犯罪悬疑电影《全民目击》,并凭借该片获得第32届大众电影百花奖最佳女配角奖。

  • 黄芪含着吃效果怎么样(黄芪和它们一起吃)

    此为施金墨治疗糖尿病的有效配伍,可降低血糖。临床用于慢性肾炎急性复发属肺脾气虚,外邪犯表内侵少阴肾经者,较为适宜。肿瘤化疗放疗期间用之扶正解毒,恢复体力,减轻毒副作用。临床研究认为,大黄用于治疗尿毒症有通腑泄毒排毒,改善血行,增强肾脏排浊,促进肾脏代谢,补益人体某些氨基酸、蛋白质、微量元素等多方面作用。

  • 个性签名一句话致自己(送给喜欢的你)

    跟着小编一起来看一看吧!个性签名一句话致自己不是每个人都能成为自己想要的样子,但每个人都可以努力,成为自己想要的样子。相信自己,你能作茧自缚,就能破茧成蝶!千万不要对任何事感到后悔,因为它曾经一度就是你想要的。只要心是晴朗的,人生就没有雨天。为别人着想,也是在为自己铺路;善待他人,就是善待自己。当你跌落谷底时,别灰心,至少接下来你每跨出的一步都是向上的。

  • 风云的帝释天是怎么死的(风云帝释天的十二大战绩)

    而作为大反派的帝释天自然是有诸多经典的战役的。战绩3:帝释天VS水神老祖水神老祖可是狠角色,吃过龙血,活了百年,实力惊人。虽然消耗了不少内力,但是多亏了帝释天,否则步惊云、断浪等人没有机会屠杀神龙,更不要说获得龙元了。战绩10:帝释天VS笑三笑这场战不是实际上的交手,可以说是两个千年强者的心理战。这一战可以说是帝释天最丢人的一战,也可以说是剑圣龙儿最出彩的一战。

  • 搜一下兔子吃萝卜的游戏(没羞没臊的丢肥皂游戏)

    「捡肥皂」仅仅是肥皂掉了,把它捡起来。直到后来「捡肥皂」有了新的定义,导致每次听到它,都难免会面红耳赤。假如哪天你的呆萌好友问你「捡肥皂」是什么意思?有没有什么办法让你能够和谐地解释捡肥皂的含义?对,「捡肥皂」这个词的发生的情景首先得是澡堂,像图中人物那样露出「发达」的胸肌。游戏没有再介绍「捡肥皂」之后的事情了,大家可以自行发挥想象。

  • 学古筝不会调音(校音用什么方法解决)

    但移位时,琴码要避免直接与面板磨擦,否则会造成码脚不稳,反而影响音准。如对八度音5-5,当确立5是a1音时,在弹完5音后,等余音消失,再弹高八度5音,若两个音的余音比较一致,才算定准了。

  • 林正英演的僵尸片入戏有多深(林正英的这部僵尸剧)

    林正英的僵尸片,早已成为经典,譬如《僵尸先生》《一眉道人》。该剧中的宋子隆,由尹天照饰演,也是《我和僵尸有个约会》中的况天佑。可在最后的大魔神中,也有出现,且已经变成好人,与师弟毛小方携手斩妖除魔。尤其是林正英饰演的毛小方,身上的那种正气与不屈,是很难模仿出来的。足见林正英的刻画,不止是僵尸道长。而这部电视剧,之所以影迷很少知道,便是在观看林正英作品的时候,大多数都是电影。

  • macbookpro扬声器有杂音(Pro内置扬声器出现噼啪杂音)

    据了解,这种爆裂声似乎是自发产生的,并且涉及13英寸和15英寸机型。目前尚不清楚这种爆裂声是否仅限于特定的音量或频率。目前,已经有网友对引发这一扬声器问题的原因进行了推测,其中包括缺乏屏蔽导致的无线电干扰、音频驱动和T2芯片出现问题等等。2018年MacBookPro的扬声器问题似乎没有那么可怕,也没有那么普遍。另外,至少有一名用户声称,这个问题可能已经在最新的macOSMojavebeta中得到了修复,不过目前还没有得到证实。