二十九架构组件包类跟我学编程

Posted 网络矿工IT训练营

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二十九架构组件包类跟我学编程相关的知识,希望对你有一定的参考价值。

当前我们已经建立了一个最简单简单的DEMO。所涉及的知识内容也包含了很多。下面开始深入了。在深入之前,想让大家了解下软件的发展。这样更有利于我们后续的讲解。


软件最早是单机版,后来逐步有了网络版本。笔者最早接触的是MIS,就是网络版的软件,也是C/S结构。两层结构,客户端是用VB、PB、Delphi编写的类似Excel操作的各种功能软件,服务器主要用于数据库存储。这个较为容易理解。C-S,也是两层结构。这种软件也称为胖客户端软件,因为客户端存在业务逻辑处理功能,这种软件的优势很明显:客户端功能极其强大,服务器负载仅承担数据库操作。但这种软件的弊病也极为明显,维护困难。因为业务逻辑的操作在客户端,所以,一旦发生业务逻辑的变更,需要更新所有的客户端,这样的操作,是非常痛苦的。


所以,软件结构开始升级,尽可能的将业务逻辑放入到服务器端来执行,客户端尽可能的简化瘦身,这就形成了三层结构,甚至为N层结构。当客户端瘦身到一定程度,就变成了B/S模式。这个过程中实际有很多的尝试,当年微软还推过一个技术叫:智能客户端。也是这样的一个思路,客户端尽可能保留通用的功能,然后可以加载由服务端提供的各类业务逻辑操作。这样一旦业务变更,技术人员只需要更新服务端即可,无需考虑客户端的问题。


实际做到了这一步,只是解决了软件维护的一部分问题,也就是软件的运行维护,那么软件本身呢?


原来在编写软件中有一种说法:软件的编写就是Ctrl+C和Ctrl+V。如果你认真的跟了我们的教程,你也会发现,在DbCls类中,getPwd和getNickName中的代码,可以说是99%的雷同,编写中,完全可以Ctrl+C和Ctrl+V,然后修改一下提取数据的名称即可。快速、简单是这种编程的特点。但问题在于维护,假如此时,根据业务需要,发生了一定的变化,t_user这个表需要拆分成两个表:一个是专门用于存储登录名称和密码的表,一个是存储用户基本信息的表,包括昵称、性别、地区等等。这就是代码级的维护。这类维护很多时候对软件而言是致命的。所以,如果软件的代码写的不够好,后期进行升级操作的时候,就会异常困难,甚至一些小功能的修正都无法进行。老程序员应该都遇到过,很多时候,对软件打补丁都不如重头来做一遍更容易,但原有系统已经稳定的运行了多年,那绝不是说一句更换就可以更换的。


所以,这也是面向对象需要解决的问题。从代码结构上,尽可能将功能相近的放在一些,然后分离职能不同的代码,通过封装、统一的调用方式来进行。从而提升系统的可维护性。


这就是我们要继续讲解的内容,软件的架构及面向对象。


开始了解几个概念:


架构:软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。软件体系结构是构建计算机软件实践的基础。—— 摘自百度百科。


架构,是站在软件的全局上,来看软件的构成,这个时候,软件可能包含不同的子软件,然后包含不同的通讯协议标准等等。


框架:软件框架(software framework),通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。—— 摘自百度百科。


框架,更加专注的解决软件体系中每一类的问题,譬如:Spring框架,html框架。


组件:软件组件开发主要是开发与维护系统构造过程中用到的组件。将软件组件作为一个单独的过程,目的是将组件作为构造软件的“零部件”。—— 摘自百度百科。


组件则是在框架内,更为精细的一类“零部件”,往往是由对一个问题的一系列的解决“零部件”构成,然后对其进行封装形成了一个组件。


包:软件包(SoftWare Package)是指具有特定的功能,用来完成特定任务的一个程序或一组程序。可分为应用软件包和系统软件包两大类。应用软件包与特定的应用领域有关,又可分为通用包及专用包两类。—— 摘自百度百科。


我们现在的示例项目,未来要做成:


采用微服务架构,每一个服务就是一个独立的部署单元(separately deployed unit)。这些单元都是分布式的,互相解耦,通过远程通信协议联系。在微服务架构体系中,我们选择了Spring框架来予以实现,前端则采用bootstrap框架,可能我们也会采用一些常用的前端框架,譬如:

Layui、Vue等。当然为了可以更好的将我们的示例项目建成成熟的可应用项目,我们还会采用第三方的组件包来完善一些功能,譬如对PDF的处理,对Office文件的处理,对Web打印的处理。


软件的概念基本上就这样了。理解后开始深入,并改造本示例项目。



以上是关于二十九架构组件包类跟我学编程的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js 源码分析(二十九) 高级应用 transition-group组件 详解

开始写游戏 --- 第二十九篇

ROS从入门到精通系列(二十九)-- linux封装ROS 自启动脚本及可执行程序App

Android 架构组件 之 ViewModel 学习

Expo大作战(二十九)--expo sdk api之registerRootComponent(注册跟组件),ScreenOrientation(屏幕切换),SecureStore,

1.29 Java学习系列(二十九)UML建模的理解和图形整理