日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

譯者 | 李睿

審校 | 重樓

本文將介紹如何在幾分鐘內(nèi)而不是幾周或幾個(gè)月內(nèi)構(gòu)建一個(gè)完整的數(shù)據(jù)庫系統(tǒng):

(1)API:將添加用戶界面(UI)和邏輯使其成為微服務(wù)

(2)邏輯和安全性:多表約束和派生,以及基于角色的安全性

(3)管理應(yīng)用程序:最后構(gòu)建一個(gè)多頁面、多表格的Web應(yīng)用程序

使用開源API邏輯服務(wù)器(API Logic Server)將提供:

關(guān)鍵特性

內(nèi)容描述

重要性

自動(dòng)化

•即時(shí)項(xiàng)目創(chuàng)建:一個(gè)API和一個(gè)管理Web應(yīng)用程序

•解鎖UI應(yīng)用開發(fā)

定制

聲明性邏輯和安全性

•5條規(guī)則vs 200行Python/ target=_blank class=infotextkey>Python代碼

•減少40倍后端代碼

迭代

•修改數(shù)據(jù)模型并添加規(guī)則,以及使用Python實(shí)現(xiàn)

•迭代開發(fā)

•Python的可擴(kuò)展性

構(gòu)建的過程只需要10分鐘,而傳統(tǒng)的開發(fā)過程則需要數(shù)周時(shí)間。

本文提供了以下幾種方法:

  • 概念概述:本文側(cè)重于概念和基本過程,其操作細(xì)節(jié)在附錄中描述。
  • 自我演示:自己安裝和創(chuàng)建這個(gè)數(shù)據(jù)庫系統(tǒng)。
  • 帶視頻的自我演示:也可以使用這個(gè)視頻(它是相同的數(shù)據(jù)庫系統(tǒng),但其數(shù)據(jù)庫是用ChatGPT創(chuàng)建的)。

1.自動(dòng)化:即時(shí)項(xiàng)目

這個(gè)項(xiàng)目是使用如下命令創(chuàng)建的:

$ ApiLogicServer create --project_name=basic_demo --db_url=basic_demo

注意:db_url是縮寫。如果有自己的數(shù)據(jù)庫,可以提供一個(gè)SQLAlchemy URI。

這將通過讀取模式創(chuàng)建一個(gè)項(xiàng)目。數(shù)據(jù)庫是客戶(Customer)、訂單(Orders)、項(xiàng)目(Items)和產(chǎn)品(Product),如附錄所示。

可以用VSCode打開它,并按如下方式運(yùn)行:

(1)創(chuàng)建虛擬環(huán)境:如附錄所示。

(2)啟動(dòng)服務(wù)器:F5(也在附錄中描述)。

(3)啟動(dòng)管理應(yīng)用程序:使用IDE控制臺(tái)中提供的鏈接或單擊http://localhost:5656/。瀏覽器中應(yīng)該出現(xiàn)如下所示的截圖。

以下將探討已經(jīng)創(chuàng)建的數(shù)據(jù)庫系統(tǒng)(這與通常的數(shù)據(jù)庫類似)。

1.1 API與Swagger

數(shù)據(jù)庫系統(tǒng)為每個(gè)表創(chuàng)建一個(gè)帶有端點(diǎn)的API,具有過濾、排序、分頁、樂觀鎖定和相關(guān)數(shù)據(jù)訪問功能,這是一個(gè)自助式服務(wù),為自定義應(yīng)用開發(fā)做好準(zhǔn)備。

即時(shí)微服務(wù)的邏輯和安全規(guī)則

1.2 Admin App

它還創(chuàng)建了一個(gè)管理應(yīng)用程序(Admin App):多頁面、多表,可用于業(yè)務(wù)用戶的敏捷協(xié)作和后臺(tái)數(shù)據(jù)維護(hù)。這為API創(chuàng)建的自定義用戶界面(UI)提供補(bǔ)充。

可以單擊客戶2(Customer 2),并查看他們的訂單和項(xiàng)目。

即時(shí)微服務(wù)的邏輯和安全規(guī)則

2.在IDE中自定義

雖然API/UI自動(dòng)化是一個(gè)很好的開端,但實(shí)施邏輯和安全性至關(guān)重要。其方法如下:

下面的apply_customization過程模擬向項(xiàng)目添加安全性,并使用IDE在logic/declare_logic.sh和security/declare_security.py中聲明邏輯和安全性。聲明的安全性和邏輯顯示在下面的截圖中。

在項(xiàng)目的終端窗口中要應(yīng)用自定義:

(1)停止服務(wù)器(紅色停止按鈕,或Shift-F5 -參見附錄)

(2)自定義應(yīng)用

# mac, linux
sh apply_customizations.sh
#windows
./apply_customizations.ps1

2.1聲明安全性

上面的apply_customizations過程模擬了ApiLogicServer add-authcommand,并使用IDE在logic/declare_logic.sh中聲明安全性。

以下是聲明安全性的過程:

(1)啟動(dòng)服務(wù)器F5

(2)啟動(dòng)Admin應(yīng)用程序:http://localhost:5656/

(3)登錄賬號(hào)為s1,密碼為p

(4)點(diǎn)擊客戶

注意:

(1)管理應(yīng)用程序現(xiàn)在顯示的客戶數(shù)量已經(jīng)減少

(2)下面的截圖說明了安全聲明和操作:

  • 上面代碼面板中的聲明性授予,等等
  • 下面代碼面板的日志記錄,通過顯示應(yīng)用了哪些授權(quán)(+ Grant:)來幫助調(diào)試;

即時(shí)微服務(wù)的邏輯和安全規(guī)則

2.2聲明邏輯

邏輯(多表派生和約束)是數(shù)據(jù)庫系統(tǒng)的重要部分,通常占到將近一半。API邏輯服務(wù)器提供類似電子表格的規(guī)則,極大地簡化和加速邏輯開發(fā)。

規(guī)則在Python中聲明,并通過IDE代碼完成簡化。下面的屏幕顯示了檢查信用邏輯的5條規(guī)則。

上面的apply_customizations過程模擬了使用IDE在logic/declare_logic.sh中聲明邏輯的過程。

可以查看運(yùn)行中的邏輯:

(1)在管理應(yīng)用程序中,注銷(右上角),并以管理員(admin)身份登錄。

(2)使用管理應(yīng)用程序?yàn)榭蛻?添加訂單和項(xiàng)目(見附錄)。

觀察控制臺(tái)日志中觸發(fā)的規(guī)則,如下面的屏幕截圖所示。

邏輯提供了對過程邏輯的顯著改進(jìn),如下所述。

A.復(fù)雜性擴(kuò)展

下面的截圖顯示了邏輯聲明和插入項(xiàng)目(Item)的日志記錄。每行表示一個(gè)規(guī)則觸發(fā),并顯示該行的完整狀態(tài)。

注意,這是一個(gè)多表事務(wù),如縮進(jìn)所示。這是因?yàn)?就像電子表格-規(guī)則自動(dòng)鏈,包括跨表。

即時(shí)微服務(wù)的邏輯和安全規(guī)則

B.代碼簡潔40倍

5個(gè)類似電子表格的規(guī)則可以表示與200行代碼相同的邏輯,如下所示。這在系統(tǒng)的后端減少了40倍代碼。

C.自動(dòng)再利用

以上的邏輯(可能是為Place order設(shè)計(jì)的)自動(dòng)應(yīng)用于所有事務(wù):刪除訂單、更改項(xiàng)目、將訂單轉(zhuǎn)移給新客戶等。這減少了代碼,并提高了質(zhì)量(沒有遺漏的極端情況)。

D.自動(dòng)優(yōu)化

通過削減和消除昂貴的聚合查詢,可以最小化SQL開銷。這些可能導(dǎo)致數(shù)量級的影響。

E.規(guī)則透明

規(guī)則是一種可執(zhí)行的設(shè)計(jì)。需要注意的是,它們完全映射到自然語言設(shè)計(jì)(如注釋所示),可供業(yè)務(wù)用戶閱讀。

可以選擇使用Behave TDD方法來定義測試,并且規(guī)則報(bào)告Rules Report將顯示為每個(gè)測試執(zhí)行的規(guī)則。

3.使用規(guī)則和Python進(jìn)行迭代

類似于電子表格的規(guī)則不僅簡潔了40倍的代碼,而且還有效地簡化了維護(hù)。舉個(gè)例子:

購買10件或以上的碳中和產(chǎn)品,給予10%的折扣。

下面的apply_iteration過程模擬迭代:

  • 通過Product.CarbonNeutral獲取一個(gè)新的數(shù)據(jù)庫。
  • 發(fā)出ApiLogicServer rebuild-from-database命令,重建項(xiàng)目(數(shù)據(jù)庫模型、API),同時(shí)保留上面所做的自定義設(shè)置。
  • 獲取修改后的ui/admin/admin.yaml,在管理應(yīng)用程序中顯示這個(gè)新列。
  • 獲得修改后的邏輯:在logic/declare_logic.py中,將model . item . amount公式的2行替換為以下內(nèi)容(下一個(gè)截圖顯示了使用斷點(diǎn)執(zhí)行的修訂邏輯):

 

def derive_amount(row: models.Item, old_row: models.Item, logic_row: LogicRow):
 amount = row.Quantity * row.UnitPrice
 if row.Product.CarbonNeutral and row.Quantity >= 10:
 amount = amount * Decimal(0.9) # breakpoint here
 return amount
 Rule.formula(derive=models.Item.Amount, calling=derive_amount)

要應(yīng)用這個(gè)迭代,在項(xiàng)目的終端窗口中:

(1)停止服務(wù)器(紅色停止按鈕,或Shift-F5 -參見附錄)

(2)應(yīng)用迭代

# mac, linux
sh apply_iteration.sh
#windows
./apply_iteration.ps1

(3)設(shè)置斷點(diǎn),如下圖所示。

(4)測試:啟動(dòng)服務(wù)器,以管理員身份登錄。

(5)使用管理應(yīng)用程序通過添加12個(gè)綠色項(xiàng)目來更新訂單。

在斷點(diǎn)處,可以使用標(biāo)準(zhǔn)調(diào)試器服務(wù)來調(diào)試邏輯(檢查項(xiàng)目屬性、步驟等)。

即時(shí)微服務(wù)的邏輯和安全規(guī)則

這個(gè)簡單的例子說明了迭代的一些重要方面,將在以下的小節(jié)中描述。

3.1.維護(hù)自動(dòng)化

除了編寫文檔之外,開發(fā)人員最討厭的任務(wù)之一就是維護(hù)代碼。這是因?yàn)檫@與編寫代碼無關(guān),而是需要理解和破譯別人編寫的代碼,這樣就可能添加4或5行代碼,這些代碼有望被調(diào)用并正確運(yùn)行。

規(guī)則改變了這一點(diǎn),因?yàn)樗鼈兓谙到y(tǒng)發(fā)現(xiàn)的依賴關(guān)系對它們的執(zhí)行(和修改)進(jìn)行自我排序。因此要更改邏輯,只需“在桶中放入一個(gè)新規(guī)則”,數(shù)據(jù)庫系統(tǒng)將確保以適當(dāng)?shù)捻樞蛘{(diào)用它,并在所有應(yīng)用的用例中重復(fù)使用。維護(hù)速度更快,質(zhì)量更高。

3.2使用Python擴(kuò)展

在這種情況下,需要進(jìn)行一些if/else測試,添加少量Python非常方便。即使對于Python新手來說,使用“Python作為4GL”也非常簡單。

當(dāng)然,擁有Python及其許多庫的全部面向?qū)ο蠊δ埽虼瞬淮嬖谧詣?dòng)化懲罰限制。

3.3調(diào)試:IDE和日志記錄

上面的屏幕截圖說明了調(diào)試邏輯是人們所期望的:使用IDE的調(diào)試器。這種“基于標(biāo)準(zhǔn)”的方法適用于其他開發(fā)活動(dòng),例如源代碼管理和基于容器的部署。

3.4自定義保留

需要注意,這是從修改后的數(shù)據(jù)庫重新構(gòu)建項(xiàng)目的,這說明可以在保留自定義的同時(shí)進(jìn)行迭代。

4. API定制:標(biāo)準(zhǔn)

當(dāng)然,眾所周知,全世界的所有業(yè)務(wù)都依賴于“hello world”應(yīng)用程序。這是在api/customize_api中提供的。

  • 標(biāo)準(zhǔn)Python
  • 使用Flask
  • 對于數(shù)據(jù)庫訪問,SQLAlchemy:注意所有來自自定義API的更新也會(huì)強(qiáng)制執(zhí)行其邏輯。

5.部署容器:協(xié)作

API邏輯服務(wù)器還創(chuàng)建用于部署的腳本。雖然這一演示不需要這些功能,但這意味著可以與業(yè)務(wù)用戶進(jìn)行協(xié)作:

(1)從項(xiàng)目創(chuàng)建一個(gè)容器。參見devops/Docker-image/build_image.sh

(2)上傳到Docker Hub

(3)部署敏捷協(xié)作

結(jié)語

即時(shí)微服務(wù)的邏輯和安全規(guī)則

以上在幾分鐘內(nèi)而不是幾天或幾周內(nèi),使用API邏輯服務(wù)器將一個(gè)想法轉(zhuǎn)換為可工作的軟件,自定義邏輯和安全性,并迭代以滿足新的需求。

要想深入了解,可以安裝API邏輯服務(wù)器并執(zhí)行這個(gè)演示,或者從自己的數(shù)據(jù)庫創(chuàng)建一個(gè)系統(tǒng)。

附錄:數(shù)據(jù)庫架構(gòu)

即時(shí)微服務(wù)的邏輯和安全規(guī)則

附錄:程序

這里提供了運(yùn)行演示的具體過程,因此它們不會(huì)影響上面的概念討論。

可以使用VSCode或Pycharm。

附錄1.建立虛擬環(huán)境

Python為特定于項(xiàng)目的依賴項(xiàng)使用虛擬環(huán)境。根據(jù)IDE創(chuàng)建一個(gè)如下所示的文件。

VSCode:

建立venv,并通過第一個(gè)預(yù)構(gòu)建的run Configuration運(yùn)行它。以下建立venv:

python -m venv venv; venvScriptsactivate # win
python3 -m venv venv; . venv/bin/activate # mac/linux
pip install -r requirements.txt

對于PyCharm,將獲得一個(gè)對話框,要求創(chuàng)建venv,然后確定。

附錄2.啟動(dòng)和停止服務(wù)器

兩個(gè)IDE都提供運(yùn)行配置來啟動(dòng)程序。這些都是由ApiLogicServer create預(yù)先構(gòu)建的。

對于VSCode,用F5啟動(dòng)服務(wù)器,用Shift-F5或紅色停止按鈕停止。

對于PyCharm,使用ctrl - d啟動(dòng)服務(wù)器,并使用紅色停止按鈕停止。

附錄3.進(jìn)入新訂單

進(jìn)入新訂單:

(1)點(diǎn)擊“客戶1”。

(2)點(diǎn)擊+“添加新訂單”。

(3)將Notes設(shè)置為“忙碌”,然后按“保存”和“顯示”。

(4)點(diǎn)擊+“添加新項(xiàng)目”。

(5)輸入數(shù)字1,查找“產(chǎn)品1”(Product 1),然后單擊“保存并添加另一個(gè)”。

(6)輸入數(shù)字2000,查找“產(chǎn)品2”(Product 2),然后單擊“保存”。

(7)觀察約束錯(cuò)誤,它是由項(xiàng)目到訂單和客戶的滾動(dòng)觸發(fā)的。

(8)將數(shù)量修改為2,然后單擊“保存”。

附錄4. 更新訂單

探索綠色產(chǎn)品的新邏輯:

(1)訪問之前的訂單,并添加新項(xiàng)目。

(2)輸入數(shù)字11,查找綠色產(chǎn)品,然后單擊“保存”。

附錄:添加數(shù)據(jù)庫列

這里的數(shù)據(jù)庫是SQLite。可以使用SQLite CLI在IDE的終端窗口中添加一個(gè)列:

$ sqlite3 database/db.sqlite
> alter table Products Add CarbonNeutral Boolean;
> .exit

SQLite DBMS安裝了API邏輯服務(wù)器,但不是所有系統(tǒng)都提供CLI。如果沒有安裝,則需要安裝。

原文標(biāo)題:Instant Microservices: Rules for Logic and Security,作者:Val Huber

分享到:
標(biāo)簽:微服
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定