社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
1)解放生产力。
例如前后端可以各自开发自己的逻辑,不会出现前端要处理后端的事情,后端要处理前端的事情。
2)松耦合的架构更灵活,部署更方便,更符合微服务的设计特性。
前后端分离后,都是模块化设计,更好架构更简单,例如前端原本是vue框架,那么换成reator框架是非常方便的。若前后端不分离,想更换框架是非常困难的。
3)性能的提升、可靠性的提升。
因为前后端分离后,容易添加其它模块,而一般前端的请求都是会经过中间过滤层(网关),再到达后端,所以当有攻击到来也只是会先攻击网关,即使网关宕机了,我们的后端程序也不会出现太大问题。
若前后端不分离,请求直达后端服务,由于缺少中间层保护,安全性大大降低,程序崩溃风险加大,那么你的公司很容易就会出现破产的情况,这是万万不可的。
但是针对缺点,优势是更加重要的,所以缺点肯定要被忽略的。
1)REST是Representational State Transfer(表现层状态转移)的缩写,常用的行为(查看(view),创建(create),编辑(edit)和删除(delete))都可以直接映射到HTTP 中已实现的GET,POST,PUT和DELETE方法。
2)通常使用Json作为数据封装格式。
3)统一接口。
4)无状态。
有状态和无状态的区别:服务器端是否保存两个相同请求者的请求在服务器端是否具有上下文关系。如果是有状态,则服务器会保存请求的相关信息,每个请求可以默认使用以前的请求信息。如果是无状态(我们使用这种),服务器端所能处理的过程必须全部来自于请求所携带的信息。cookie便是有状态的一种产物,cookie有sessionID,并设置超时时间,对应服务端,在内存维护一个sessionID的上下文内容。
选择无状态的原因:可以减少服务器的存储压力,将sessionID放到浏览器中存储。当浏览器第一次请求时,不用附带sessionID,服务器验证成功返回sessionID给浏览器,浏览器保存该sessionID。当浏览器第二次请求时,就需要附带该sessionID进行请求。
5)可缓存。
例如。
我们直接看sql语句,看看数据库的表是如何设计的。
// 1. 用户
CREATE TABLE `video_server`.`users` (
`id` int unsigned primary key auto_increment,
`login_name` varchar(64) unique key,
`pwd` text
);
// 2. 视频
CREATE TABLE `video_server`.`video_info` (
`id` varchar(64) NOT NULL,
`author_id` int(10) NULL,
`name` text NULL,
`display_ctime` text NULL,
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
);
// 3. 评论
CREATE TABLE `video_server`.`comments` (
`id` varchar(64) NOT NULL,
`video_id` varchar(64) NULL,
`author_id` int(10) NULL,
`content` text NULL,
`time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
);
// 4. 会话
CREATE TABLE `video_server`.`sessions` (
`session_id` varchar(244) NOT NULL,
`TTL` tinytext NULL,
`login_name` text NULL,
PRIMARY KEY (`session_id`)
);
// 5. 待删除视频表
CREATE TABLE `video_server`.`video_del_rec` (
`video_id` varchar(64) NOT NULL,
PRIMARY KEY (`video_id`)
);
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!