发表于: 2021-01-12 23:30:31

1 1253


今天完成的事情:


了解B\S,C\S架构的特点


为什么要进行项目分层,项目分层的好处


用自己的话梳理springmvc,对之间不懂,忘记的知识点(spring和mybatis整合)进行回顾和重现学习



明天计划的事情:

直接动手开始做了

项目分层,使用mybatis generator代码生成。


写好单元测试,和Service。每一张表的增删改查创建好。



遇到的问题:

通过梳理mvc的思想,发现自己不懂在Controller层,用的是StudentService,在单元测试当中用的是StudentServiceImpl。这两者之间的区别是什么?我当时学过的,现在忘记了。说明自己还是没有明白它们之间关系和规律。


还有为什么dao层和service层要写接口?


下面写了答案


然后怎么通过mapper代理的也忘了差不多了,转回去复习看了一遍



收获:

B\S,C\S架构的特点:


1.知道B\S架构是由C\S架构改进过来的,可以说属于三层C/S架构





2.B/S架构和C/S架构不同,浏览器不是直接和数据库服务器相连,所以是多对多的结构。因此在此结构下,很适合在广域网里实现巨大的互联网,甚至是全球网。有着很强大的信息共享性。(微博,知乎,B站,)
========

注意到以下几个点:


1.能有效地保护数据平台和管理访问权限,服务器数据库也很安全。


2.在数据库服务器上不一定使用WINDOWS系统(可以使用Linux系统),选择更多,成本更少。


3.如果是异地,只需要把服务器连接专网即可,实现远程维护、升级和共享。


4.在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。


5.数据存放在数据库服务器,客户端并不存放任何业务数据或者数据库连接信息,所以数据比较安全。


6.随着服务器负载的增加,可以平滑地增加服务器的个数并建立集群服务器系统,然后在各个服务器之间做负载均衡


7.所有的用户都是通过一个JDBC连接缓冲池连接到数据库的,用户并不保持对数据库的连接,用户数基本上是无限的。


8.软件重用性强,成本低廉。


9.B\S架构主要的逻辑事务处理还是要靠服务器,所以服务器的负担很重。


10.B/S架构相应速度慢,主要的重任在数据库服务器身上,由于B/S架构的无限扩展性,当用户激增,访问量庞大时,服务器相应速度慢,服务器存在瘫痪的危险。(这也就是为什么要使用索引,还要学习一些优化数据库的功能的必要性,一切都是为了用户体验~~~)



总结:这就是为什么要设置权限的问题,还有为什么要学习Linux系统,JAVA,学习MySQL,服务器,和学习NGINX负载均衡,JDBC连接缓冲池的原因,学到的知识果然都是要用到的。
============

前后端分离与前后端不分离的区别:


前后端不分离(之前做个直接返回json页面应该就是前后端不分离)


      在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高。
        这种应用模式比较适合纯网页应用,但是当后端对接App时,App可能并不需要后端返回一个HTML网页,而仅仅是数据本身,所以后端原本返回网页的接口不再适用于前端App应用,为了对接App后端还需再开发一套接口。
请求的数据交互如下图:



前后端分离(老大的说法是B\S架构是API,API也就是接口,只要通过这个API连接就可以调用当中的功能,而不去管它的具体实现。其实这和我们用户用各种网页功能也很像,只管使用,不需要知道它是具体怎么实现(前端来决定网页页面,后端处理各种数据))


      在前后端分离的应用模式中,后端仅返回前端所需的数据,不再渲染HTML页面,不再控制前端的效果。至于前端用户看到什么效果,从后端请求的数据如何加载到前端中,都由前端自己决定,网页有网页的处理方式,App有App的处理方式,但无论哪种前端,所需的数据基本相同,后端仅需开发一套逻辑对外提供数据即可。
在前后端分离的应用模式中 ,前端与后端的耦合度相对较低。

在前后端分离的应用模式中,我们通常将后端开发的每个视图都称为一个接口,或者API,前端通过访问接口来对数据进行增删改查。



对应的数据交互如下图 :



===================

WEB开发的了解


第一层 入门介绍图



我目前在做的就是对项目进行分层。springmvc对项目分层三层,model层,view层,controller层。由于我需要增加多个模块还需要继续分层,这里的分层是指分多个模块,但由一个父模块控制,依赖都可以在父模块中的POM.xml中添加。



为什么要使用maven多模块构建项目?这样得好处是什么?



这些都没碰到过,只是大概懵懂一点。


=======

第二层 前后端分离图



数据放在云端,才可以做到多端统一,不需要本地存储.


云端的电脑就叫做服务器,业务层和持久层,就是在云端.


这也是前后端区分的重要区别,不是以语言来区分前端和后端,而是看程序是运行在用户端,还是运行在云端.在用户端的,就是前端,在云端的,就是后端.


CS架构,其实指的就是桌面端,就是PC的应用软件,一般都是用C来写(还是C++或C#?我对C这套体系不够熟悉,对桌面端接触的不多.)


BS架构,指的就是网页端.过去的网页端,原生JS+JQuery是主流,网页又分成两种类型,一种叫静态网页,一种叫动态网页.


静态网页就是只有Html(不考虑JS),内容是在Html里写死的.一般都用于不经常修改的部分,比如说关于我们,公司介绍之类的,每一个网页都有自己的独有设计,不好统一,也不经常修改,没有必要做成动态.


动态网页就是指,页面的框架一致,但是内空不同,比如说知乎的个人主页,结构是相似的,但是不同的人看到的数据不一样.这就是通过前端传过来的用户ID,去后端取数据的过程.


注:(原来这就是静态网页和动态网页的区别,我之前以为用html的就是静态网页,用json,jsp就是动态网页。)
======

后端是指运行在云端的代码.


前端是指运行在用户端的代码.



前台是指外部用户使用的系统.


后台是指公司内部使用的系统.


前台和后台是两个web项目,一个是展示数据的,一个是管理数据的
=========

在这里看了一遍阮一峰谈MVC模式(参考网址:http://www.ruanyifeng.com/blog/2007/11/mvc.html


这里梳理一下自己的想法:


Model(模型):目的和数据库进行交互,实现增删改查。


View(视图):对用户进行展示页面,数据。


Controller(控制):根据用户的输入的数据,来对数据库中的数据进行调用,进行相应的操作,返回结果。


因为是每一层都想外层提供接口(这就是接口的意义所在),所以每一层内部的变化不影响其他层。同时三层又联系十分紧密,控制层是数据交互层,同时提供数据的展示和对数据库进行增删改查。


在梳理这些大概念的同时,发现自己对数据库交互,spring和mybatis之间怎么整合忘记了。



例子:
1.StudentService和StudentServiceImpl区别是什么?为什么要加上Service的实现类。
搜索发现这是一个良好的编码习惯,和写代码时候的缩进和驼峰命名法类似。小项目用不到,大项目会用到。



2.为什么dao层和service层都要写接口?

是为了让层与层之间不过度联系,不然你修改了dao中的代码,如果service引用了dao中的类,那么也要改变service里面的代码,这样动了一处代码,所有地方的代码都要随之修改,修改起来就会很麻烦。



3.spring是怎么和mybatis进行整合的?
mybatis的主要作用是什么?持久层框架,可以对数据库进行增删改查,可以配置动态SQL并优化SQL,可以通过配置决定SQL的映射规则,它还支持存储过程等

通过这个:



==============



返回列表 返回列表
评论

    分享到