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/zh-tw/n/135552.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
NGDF的頭像NGDF
上一篇 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

發表回復

登錄後才能評論