Back结构详解

Back结构是指在前端与后端之间设置一个中间层,在前端页面调用后端服务时,先将请求发送给Back端,Back端再将请求发送给后端服务并将响应返回给前端。

一、为什么需要Back结构

1、降低前后端耦合度

在传统的前后端分离架构中,前端和后端通信需要按照约定的接口进行交互。当接口发生变化时,前后端都需要进行相应的修改,影响到整个系统的稳定性和开发进度。而Back结构则将双方之间的接口进行了封装,前端只需要调用中间层的接口即可,后端的修改对前端的影响大大降低。

2、提高前端性能

在Back结构中,Back端会将多个请求合并成一个请求,减少了前端与后端的通信流量,提高了前端性能。

3、保护后端安全

通过Back结构,后端不需要将API接口暴露在公网中,只需要将API暴露给Back端,可以保护后端的API安全。

二、Back结构的实现方式

1、使用API Gateway实现Back结构

<?php
 //前端向API Gateway发送请求
 function sendRequest($url, $data) {
   $postData = http_build_query($data);
   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, $url);
   curl_setopt($ch, CURLOPT_POST, true);
   curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
   $response = curl_exec($ch);
   curl_close($ch);
   return $response;
 }
 
 //API Gateway向后端发送请求
 function sendBackendRequest($url, $data) {
   $postData = http_build_query($data);
   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, $url);
   curl_setopt($ch, CURLOPT_POST, true);
   curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
   $response = curl_exec($ch);
   curl_close($ch);
   return $response;
 }
 
 //使用API Gateway查询订单接口
 function queryOrder($orderId) {
   $backUrl = 'http://backend.com/queryOrder';
   $backData = array('orderId'=>$orderId);
   $gatewayUrl = 'http://gateway.com/queryOrder';
   $gatewayData = array('backUrl'=>$backUrl, 'backData'=>$backData);
   return sendRequest($gatewayUrl, $gatewayData);
 }
 ?>

在这种实现方式中,前端通过向API Gateway发送请求,让API Gateway将请求转发给后端API接口,再将响应返回给前端。

2、使用服务注册与发现实现Back结构

<?php
 //使用Ribbon负载均衡器向后端发送请求
 function sendBackendRequest($url, $data) {
   $postData = http_build_query($data);
   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, $url);
   curl_setopt($ch, CURLOPT_POST, true);
   curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
   $response = curl_exec($ch);
   curl_close($ch);
   return $response;
 }
 
 //使用服务注册与发现查询订单接口
 function queryOrder($orderId) {
   $serviceId = 'backend-service';
   $instances = getServiceInstances($serviceId);
   $instance = chooseInstance($instances);
   $url = $instance['url'].'/queryOrder';
   $data = array('orderId'=>$orderId);
   return sendBackendRequest($url, $data);
 }
 ?>

在这种实现方式中,后端服务会向服务注册中心进行注册,前端通过感知服务注册中心来调用后端服务。

三、Back结构的优缺点

1、优点

(1)降低前后端耦合度,增加系统的可维护性和可扩展性;

(2)提高前端性能,将多个请求合并成一个请求,减少了通信流量;

(3)保护后端安全,后端API接口不需要暴露在公网中。

2、缺点

(1)引入中间层增加了系统的复杂度;

(2)增加了系统响应时间;

(3)需要额外的开发成本和维护成本。

原创文章,作者:NGDF,如若转载,请注明出处:https://www.506064.com/n/135552.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
NGDFNGDF
上一篇 2024-10-04 00:13
下一篇 2024-10-04 00:13

相关推荐

  • Vue TS工程结构用法介绍

    在本篇文章中,我们将从多个方面对Vue TS工程结构进行详细的阐述,涵盖文件结构、路由配置、组件间通讯、状态管理等内容,并给出对应的代码示例。 一、文件结构 一个好的文件结构可以极…

    编程 2025-04-29
  • Python程序的三种基本控制结构

    控制结构是编程语言中非常重要的一部分,它们指导着程序如何在不同的情况下执行相应的指令。Python作为一种高级编程语言,也拥有三种基本的控制结构:顺序结构、选择结构和循环结构。 一…

    编程 2025-04-29
  • Lidar避障与AI结构光避障哪个更好?

    简单回答:Lidar避障适用于需要高精度避障的场景,而AI结构光避障更适用于需要快速响应的场景。 一、Lidar避障 Lidar,即激光雷达,通过激光束扫描环境获取点云数据,从而实…

    编程 2025-04-27
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • 详解eclipse设置

    一、安装与基础设置 1、下载eclipse并进行安装。 2、打开eclipse,选择对应的工作空间路径。 File -> Switch Workspace -> [选择…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25

发表回复

登录后才能评论