开发者学堂课程【Java面试疑难点串讲5:系统架构及项目设计:MVC设计】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/28
MVC设计
阿里云开发者学院
目录:
一、业务涉及
二、数据库集群
一、业务设计
●MVC模式中,各个层级的职能划分
所谓的MVC设计模式,实际上是一种思想,虽然从整体上来说是分为了三层,但是实际上里面规划分很多层。
●MVC核心概念:在整个MVC之中,它有几个子组成部分
◆其中V是组成页面,一个页面就包括了正常的逻辑开发,正常的逻辑开发理念需要有WEB容器和其他的服务组件,这个就是中间件(WEB服务器)用户在整体处理过程中的核心是每一个用户和程序之间一定会有所交互,对于每一个程序来讲,就叫做线程。
◆C直观上的理解就是servlet,在整个servlet的处理上是一个核心概念。
◆M是划分最为复杂的:在整个的操作处理问题之中M层上有两组组件,一组叫做业务,另外一组叫做数据。
任何的项目里面,业务和数据是最为主要的控制端,没有它什么都做不了,而整个●在MVC设计模式理念之中,业务层和数据层之间的交互就是存储过程,而在存储过程的后面是一堆的数据库集群,数据库集群的好处是能帮助提高处理效率。
业务层完成工作就是功能,这些功能最终的最终实现一定是由一个一个数据库的SQL,它是能在数据中有一堆数据操作的。
●线程共享:
不管数据再怎么划分,它的核心功能都有四个:C、L、U、D,是整个开发的核心所在。而CLUD在数据层里面进行有序的组合,合并到一起就形成了业务,而有这样的业务操作,不管是多少,对于用户而言根本就不会过分关注在这个过程之中到底是怎么处理的。
●控制层:
核心作用在于调用业务层的方法,返回页面,最直白的作用是接收数据、验证数据、调用业务。
◆在整个项目代码设计的过程中,所采用的模式就是用的和它同样的概念思维形成的,没有任何的差别。
●前端:
美工展示、异步通讯
二、数据库集群
就是利用至少两台或者多台数据库服务器,构成一个虚拟单一数据库逻辑映像,像单数据库系统那样,向客户端提供透明的数据服务。
●服务层是可以单独抽取出来的,即一个项目要充分的的考虑到可扩展性,那么绝对需要将务层单独抽取出来实现RPC调用(Web Service)。
按照这样的流程来说Servlet不负责数据库,控制层不负责任何与数据库的操作,所以控制层只会存在有一个功能:调用业务层,业务的方法只有一个,如果业务操作要返回多个内容,那就是用Map集合返回。
●如果放在Servlet中会准确得把各个步骤的错进行捕捉并处理,但这样会显得控制层很重,如果放在服务层的话server又不能明确的对各个失败步骤就行处理了。
◆控制层一定要处理所有的错误操作,如果不处理,可以选择抛出,而后在整个的web.xml文件里面配置一个错误页,这个错误页只要产生了5xx异常,那么就自动跳转到错误页上显示。
◆最好还是自己手工来进行处理,因为以上的跳转属于全局模式,就是说不管出现什么样的错误,都跳转到一个页面上进行显示,这样的做法会造成错误信息不明确的问题。在实际的开发过程中JSP最大的功能就是显示。
●把业务层单独抽取出来,就会发现业务设计完全和控制层没有任何联系的,只有把单机的MVC彻底弄清楚之后才可能牵扯到更多的实际的开发问题,而集群的开发也是一种扩展而已。