小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

清晰架構(gòu)(Clean Architecture)的Go微服務(wù)

 路人甲Java 2021-07-23

更新

我最近對這個(gè)框架進(jìn)行了重大升級,雖然所做的改動(dòng)不大,但成效顯著。這次更新修復(fù)了舊框架中的所有主要問題,盡管它的的主要項(xiàng)目結(jié)構(gòu)和接口都沒有改變,具體改動(dòng)內(nèi)容請參見清晰架構(gòu)(Clean Architecture)的Go微服務(wù)—重大升級。 現(xiàn)在它幾乎擁有了我理想框架中的所有內(nèi)容。它是一個(gè)輕量級的框架,但功能強(qiáng)大,并且還是可插拔的。我寫了如下4篇文章來講述新的框架。

  1. "一個(gè)可以自我進(jìn)化的微服務(wù)框架"

  2. "一個(gè)非侵入的Go事務(wù)管理庫——如何使用"

  3. "一個(gè)非侵入的Go事務(wù)管理庫——工作原理"

  4. 清晰架構(gòu)(Clean Architecture)的Go微服務(wù)—重大升級

如果你想上一個(gè)新的項(xiàng)目,那么我建議你從新的框架開始。至于我寫的講述舊的框架的文章大部分仍然有效。在新的框架中有三種模式,從簡單到復(fù)雜。舊的框架是基于第三種模式的,是最復(fù)雜的。由于新的文章只覆蓋了新的內(nèi)容,舊的文章仍然需要閱讀。至于閱讀順序,是先讀新的還是先讀舊的到關(guān)系不大,如果你沒有讀過任何一篇,那么你可以從新的入手,再讀舊的。如果你已經(jīng)讀了舊的,那么再讀新的,可能會(huì)對整個(gè)脈絡(luò)比較清晰。如果有些文章中有一些不一致的地方,那么以新的文章為準(zhǔn)。改動(dòng)比較多的是事務(wù)管理和日志管理,程序結(jié)構(gòu)也有一些小的改動(dòng)。

原文

我用Go和gRPC創(chuàng)建了一個(gè)微服務(wù)項(xiàng)目,并試圖找出最好的程序結(jié)構(gòu),它可以作為我其他項(xiàng)目的模板。我還將程序設(shè)計(jì)和編程的最佳實(shí)踐應(yīng)用于Go Microservice程序,例如清晰架構(gòu)(Clean Architecture),依賴注入(Dependency Injection),日志記錄,錯(cuò)誤處理等。我有Java背景,并發(fā)現(xiàn)自己在Java和Go之間掙扎,它們之間的編程理念完全不同。我寫了一系列關(guān)于在項(xiàng)目工作中做出的設(shè)計(jì)決策和取舍的文章。

閱讀這些文章不需要熟悉Go,但如果你有Go基礎(chǔ)絕對會(huì)有幫助。如果你不會(huì)Go并且無法確定文章中的代碼在做什么,那么你需要從這里Go by Example1(你不必完成里面的所有主題,只需要前面幾個(gè))學(xué)習(xí)一些基本的Go。本系列中的“事務(wù)支持”涉及到數(shù)據(jù)庫,需要Go中的一些數(shù)據(jù)庫知識,你可以從Go database / sql tutorial獲取它2。如果你對Go Microservice編程感興趣并思考和關(guān)心代碼設(shè)計(jì),程序結(jié)構(gòu),編碼風(fēng)格,日志記錄,事務(wù)管理和依賴注入,那么這個(gè)系列非常適合你。

本系列的側(cè)重點(diǎn)?

本系列不是關(guān)于如何快速創(chuàng)建程序原型,而是關(guān)于如何進(jìn)行良好的程序設(shè)計(jì)使之能適應(yīng)將來的變化。例如,你可能希望將一個(gè)服務(wù)的部分功能拆分為單獨(dú)的微服務(wù),或添加事務(wù)支持,或切換到更好的日志記錄器,但不想更改代碼中的每個(gè)日志記錄語句。運(yùn)用此項(xiàng)目中的程序設(shè)計(jì),在進(jìn)行上述更改時(shí)不會(huì)觸及業(yè)務(wù)邏輯代碼。你甚至很少更改任何現(xiàn)有代碼(容器代碼除外),多數(shù)時(shí)候只添加新代碼,因此QA工作量大大減少。你可以使用此程序作為下一個(gè)微服務(wù)應(yīng)用的基礎(chǔ)框架,省去了從頭開始的麻煩。你唯一需要做的就是熟悉本框架的內(nèi)部結(jié)構(gòu)。如果你有Spring(Java)背景或來自面向?qū)ο蟮慕?jīng)歷,或者知道清晰架構(gòu)(Clean Architecture)或SOLID (面向?qū)ο笤O(shè)計(jì)),那么這些代碼應(yīng)該對你很熟悉。

你無需按以下順序閱讀文章。 如果你熟悉清晰架構(gòu)(Clean Architecture)3或SOLID (面向?qū)ο笤O(shè)計(jì))?,你可以按任意順序閱讀文章而不會(huì)有任何問題。 但我還是建議你至少先讀完第一篇,它將為你提供整個(gè)項(xiàng)目的概述,然后你可以選擇后面的任何一篇的文章。

  1. 清晰架構(gòu)(Clean Architecture)的Go微服務(wù): 程序結(jié)構(gòu)

  2. 清晰架構(gòu)(Clean Architecture)的Go微服務(wù): 程序設(shè)計(jì)

  3. 清晰架構(gòu)(Clean Architecture)的Go微服務(wù): 設(shè)計(jì)原則

  4. 清晰架構(gòu)(Clean Architecture)的Go微服務(wù): 編碼風(fēng)格

  5. 清晰架構(gòu)(Clean Architecture)的Go微服務(wù): 事物管理

  6. 清晰架構(gòu)(Clean Architecture)的Go微服務(wù): 日志管理

  7. 清晰架構(gòu)(Clean Architecture)的Go微服務(wù): 程序容器(Application Container)

  8. 清晰架構(gòu)(Clean Architecture)的Go微服務(wù): 依賴注入(Dependency Injection)

源程序:

完整的源程序鏈接 github: https://github.com/jfeng45/servicetmpl

索引:

[1] Go by Example

[2] Go database/sql tutorial

[3]The Clean Code Blog

[4] S.O.L.I.D is for the first five object-oriented design (OOD) principles introduced by Robert C. Martin, popularly known as Uncle Bob and the acronym is introduced later by Michael Feathers

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多