聊聊计算机开发中的架构选型

       武汉现在是疫情爆发,哪里也去不了。过年有时间休息一下,做做总结。年前入职一家公司,做产品经理,负责工业云平台的设计。身份不是架构师,但是作为一个曾经的软件开发,ERP实施顾问,项目经理,PLM咨询顾问,产品经理,甲方IT经理,兼职高校教师。经历了互联网企业,大型制造业企业,管理咨询,高校老师中的不同角色的洗礼我真的很想聊一聊架构。

        架构和设计模式一样,是一种做事情的框架,为了提高做事情的效率。

        最近的项目用到了微服务架构,Spring Cloud框架。是分布式系统的一种架构。特点是服务化。开发是前后端分离。前端采用流行的Vue,mangodb。

        我之前接触的很多的项目是MVC的基于SSH框架的项目。后来又听说了spring全家桶。

        这个学期在高校代课,教授JAVA开发语言。我Java语言最深刻的理解是:JAVA语言最大的特点是面向对象的设计方法。所有的东西都是对象。

        现在聊聊我对语言技术发展趋势的理解。为什么会出现前后端分离的开发模式?mangodb这类前端数据库是怎么流行发展起来的?MVC淘汰了吗?

的。新时ma代的很多程序员不知道,JAVA是由C语言发展进化而来的。JAVA语言的出现是一个革命性的语言。C语言是结构化的语言,单纯的结构化的语言意味着难以理解。JAVA语言封装了结构化语言的中难以理解的堆栈等概念。使得更加容易被理解。

        计算机语言是将现实世界抽象到计算机世界中,然后进行逻辑运算及控制之后,返回到现实世界。计算机世界是非常精确的,我们想想一下现实世界是如何描述一个物体的。我们是依靠一个个的分类来区分物体,最后做到一元化。就是指向唯一的物体。比如我想描述一个学生。首先我要描述他是哪个学校的,哪个班级的,那一届的,哪里人,叫什么名字。有可能还需要年龄来区分。来逐步获得指向这个人的唯一性的描述。针对这个特点JAVA语言的设计之初就设计了一个object类,作为所有类的父类。然后定义了继承方法这告诉我们一个道理,框架的流行和现状是有很大关系的。 

       再来看看框架,分布式系统是在互联网大发展的趋势下产生的。互联网大发展的时候出现了弹性的云服务。很多资源都云化了。

       06左右我刚刚在公司负责JAVA开发的时候已经有了MVC设计模式,用的比较多的是在控制层采用Struts,但是很多小系统还是用的JSP来设计,因为简单快速。前后端也没有分离,一个人负责所有的开发过程。用现在的说法是全栈。后来有的项目用了hibernate,发现并不太好用,要写太多的配置文件。Spring也有,但是用的很少。因为项目小,需求变动比较少,不需要框架这个时候的开发有个特点,人多也不能提高效率

       08年开始在省电网公司接触到了大型的管理系统的开发,用的ORACLE数据库,发现很多业务逻辑用的存储过程来处理。Java只是用来做了一些逻辑控制及页面调度。前端采用的EXT1.0的前端框架。哪个时候就已经有了前端框架了。这是集中式的系统,框架基本上是用不到的,例如hibernate用不到,因为用户指定了数据库,很多逻辑是用存储过程来完成的,对是数据库是强约束的。 

      14年从管理咨询公司跳槽到了武汉的一家互联网公司,接触到的项目用到了Docker容器技术。发现有了前后端分离,有了不同的客户端,IOS的,ANDROID的各种各样的,网站开发有了美工,前端分离。工作有了分工

       后来自己在软件公司带了几年项目,管理系统做的多,发现前端后端不分离也可以玩。有些项目根本就不需要美工。管理系统的,难点在业务逻辑复杂严谨。都是用户内网居多,用户数比较少,并发少。

       回头再来看看Spring全家桶。最早的Spring的特点是什么?IOC和AOP。为什么要这么玩?软件的需求分析师分析业务逻辑的时候经常出现没有分析到位的情况。导致开发后来需要改动很多地方。后来开发没有办法,只能去拆开代码中的封装好的业务对象,这种事情太多了,于是出现了Spring框架。

      Spring的出现实际上是对JAVA语言的面向对象的业务逻辑的一种破坏。 本质是在走后门。人人都在走后门了,后门就不是门了,那是一条路了。

       JAVA语言设计的时候为了降低程序员对复杂业务的理解难度,做了一次封装,Spring破坏了这种封装。项目中采用了Spring全家桶之后,你会发现在设计管理系统的时候,设计变得异常复杂诡异。比如所有管理系统都需要要涉及到的权限控制这块内容的时候,尤其是包含数据级别的权限控制的时候。

      计算机很多的时候是依靠分层技术来解决复杂的问题。计算机解决一个特定问题的复杂度是固定的,不管你用什么算法,什么架构。采用了某种架构只是架构师对业务问题做出了部分回答。其他的问题的复杂度就需要开发来解决。

        因为工作的原因,对微服务架构了解了一下,我的理解是微服务架构适用于高并发的,分布式业务。例如电商订单之类的。这些公司要求的是快速 ,弹性,可扩展。依靠大量的运营人员来解决问题。

        Spring全家桶中的用于用户识别的采用的token机制,聊天中聊到了路由,让我想到了计算机网络,让我想到了网络通讯的七层模型,让我想到了数据包的都会有一个封装好的头文件。有开发人员告诉我 ,SpringCloud中每一个服务都有一个内置的Tomcat。让我想到了集群。

          微服务架构让我想到了什么?日本的多能工。丰田精益生产模式的关键,多能工。微服务的瓶颈在哪里,我想也是有的。

          mangodb是什么,协同开发的时候,后台工程师没有提供接口数据的时候,前端自己做假数据使用的。       

          MVC不会淘汰的。Spring也会一直存在。

          我的理解是,业务分析的越清楚,越适合MVC,越是模糊变化多的,Spring越是适用。全家桶的使用需要有个度。

       

你可能感兴趣的:(J2EE开发,框架,架构,JAVA,架构选型)