一、三层架构
敏捷开发:指以用户需求为中心,采用迭代、循序渐进的方法进行软件开发。即把一个大项目分为多个相互联系,可独立运行的小项目,并分别完成,且软件一直处于可用状态。特点是小迭代,每个小功能都找客户确认,所以开发周期短,与客户交流密切,对问题能做出快速响应。
三层架构:包括UI(用户接口)、BLL(业务逻辑)、DAL(数据访问)3层。
UI层负责与用户交互,将用户的请求交给BLL层处理;BLL层将获取到的请求处理后交给UI层,同时向DAL层发送请求,并获取其数据。DAL层负责接收请求,从数据库中获取数据。MVC
用户发起请求到Controller,Controller去Model中取数据,然后返回给Controller,Controller将数据再返回给View,最后展示给用户。
二、实体关系映射(ORM)
开放封闭原则:是设计模式中的基础原则,在软件开发过程中,代码应该对扩展是开放的,对修改是封闭的。
在业务逻辑中写SQL时,该SQL只能满足一种业务场景,若场景发生改变,SQL也会发生变化,从而又引起DAL层变化,引起连锁反应。
工厂模式:目的是不用new来创建实例,切断了BLL和DAL层的强关联。但使BLL层依赖工厂,而工厂依赖了DAL。
IOC:控制反转。声明一个接口对象,A对接口对象表达需求C对象,由B实现C到接口对象,这样原本需要由A实现的C转为B实现,即为控制反转。原本A依赖于C,现在依赖于B向接口注入C,这就是依赖注入。Spring是IOC框架的常用框架,能够降低任意两层之间的耦合度。
ORM:数据库中的表是关系,定义的实体类就是实体,数据库中每个字段都有实体的属性与之对应,这是映射。Hibernate.
日志可以写入文件,也可以写入数据库。
三、测试
黑盒测试:对于测试人员来说程序员的程序就是一个黑盒子,他们对盒子里是怎么工作的不清楚,只知道给定一个输入,其输出与预期一致就可以。
单元测试
单元测试是针对单元进行测试,单元可以是一个项目,一个类,一个函数,一个if分支。测试驱动开发:在定义好业务接口后,先写测试代码,再写业务代码。然后运行测试代码,发现bug后修改业务代码。项目开发中运用设计驱动力开发和测试驱动开发,流程一般是 开始——需求——接口设计——编写测试——实现接口——运行测试——测试通过——结束。
四、缓存
缓存就是一个中间层,通过这个中间层,可以最少次数的访问数据库。memcache,redis.后者最大的特点是可以持久化。
CDN:内容分发网络。CDN服务器上存放静态资源或者变化不频繁的资源,并具有转发功能,当用户发起请求访问静态资源时,CND服务器直接返回页面,若访问动态资源,则CDN将其转发给WEB服务器。
五、前端框架
EasyUI:基于JQuery的前端框架,支持HTML5。
Bootstrap:基于HTML,CSS,JavaScript.特点是可以自适应。
六、中间件
中间件是一种独立的系统或服务。
RabbitMQ。
七、微服务
SOA:面向服务的架构,目的是完全隔离业务逻辑和前端显示。但造成服务端庞大,项目发布难度大。
微服务:微服务是把SOA后台切成很多块业务上没有耦合的功能模块,每个模块都是一个独立的服务,即为微服务。好处是每个功能模块的开发,测试工作量都不会太大,在项目发布时也只会影响当前模块,不会影响整个项目的使用。特征是简单连接、分散管理。简单连接常用WebService或DCOME协议,传输数据使用复杂的XML或二进制,而微服务使用HTTP协议,数据传输使用JSON。分散管理,按照功能各司其职,甚至不会使用相同的数据库。