ABPvNext-微服務架構基礎入門

2023-04-14 18:00:48

ABPvNext-微服務架構基礎入門

本文使用的是ABPvNext商業版 最新穩定版本7.0.2為演示基礎的,後續如果更新,會單獨寫一篇最新版本的,此文為零基礎入門教學,後續相關程式碼會同步更新到gitee倉庫中。


準備工作:

  • 1.登入ABPvNext官網 網址 http://abp.io

  • 2.跳轉到商業版的說明檔案,目前商業版沒有中文,只能使用谷歌瀏覽器的內建翻譯功能了

  • 3.框架的相關環境要求,請自自行檢視

  • 4.安裝ABP CLI工具,安裝方式是使用dotnet命令列工具,作為.NET開發者,這個本機一定是有的了

    //安裝或者更新構建工具,如果想與我這篇文章一樣,請指定安裝版本號
    dotnet tool install -g Volo.Abp.Cli
    
    //登入ABP官網賬號,既然使用商業版,肯定是已經有相關賬號了
    abp login <username>
    
    //安裝 ABP 套件(主要功能是後續建立解決方案以及程式碼生成工具等)
    abp suite install
    
    
    

建立專案並啟動:

  • 1.通過ABP提供的商業套件 新建一個專案,本次使用圖形化方式建立

    //執行完成後會拉起一個控制檯,和網頁,不要關閉控制檯
    abp suite
    
  • 2.在開啟的頁面中,點選 Create a New solution(建立一個新的解決方案)

  • 3.建立使用微服務模板建立,所以選擇Microservice template

  • 4.分別輸入專案名稱(Project Name) 輸出目錄(Output folder)以及UI模式(MVC),點選確定,開始 建立專案

  • 5專案生成完成後,開啟相關目錄,可以看到工具給生成的ABPvNext微服務專案

  • 6.接下來,我們將run-tye.ps1檔案開啟,需要修改一下其中的一些設定(更改前)

    <# Check development certificates #>
    <# 原生的證書,由於專案分層,之間呼叫都是使用https方式,所以本地偵錯必須有證書 #>
    if (! (  Test-Path ".\etc\dev-cert\localhost.pfx" -PathType Leaf ) ){
       Write-Information "Creating dev certificates..."
       cd ".\etc\dev-cert"
       .\create-certificate.ps1
       cd ../..  
    }
    
    <# 這個是官方提供的執行環境,這個建議大家單獨安裝,否則開發機器會很卡,所以直接刪除掉 #>
    
    $requiredServices = @(
      'sql-server-db',
      'grafana',
      'prometheus',
      'kibana',
      'rabbitmq',
      'elasticsearch',
      'redis'
    )
      
    foreach ($requiredService in $requiredServices) {  
    
        $nameParam = -join("name=", $requiredService)
      $serviceRunningStatus = docker ps --filter $nameParam
      $isDockerImageUp = $serviceRunningStatus -split " " -contains $requiredService
      
      if( $isDockerImageUp )
      {
        Write-Host ($requiredService + " [up]")
      }
      else
      {
          cd "./etc/docker/"
        docker network create abpmicservie-network
        docker-compose -f docker-compose.infrastructure.yml -f docker-compose.infrastructure.override.yml up -d
        cd ../..
        break;
      }
    }
    <# 這個後面會手動執行,所以也刪除掉 #>
    cd "./shared/ABPMicServie.DbMigrator"
    dotnet run
    cd ../..
     
    
    <# Run all services #>
    
    tye run --watch
    
  • 我們將檔案重新命名為 執行.ps1,內容如下

    <# Check development certificates #>

    if (! ( Test-Path ".\etc\dev-cert\localhost.pfx" -PathType Leaf ) ){

    Write-Information "Creating dev certificates..."

    cd ".\etc\dev-cert"

    .\create-certificate.ps1

    cd ../..

    }

    <# Run all services #>

    tye run --watch

  • 7.先不要執行專案,在專案的根目錄開啟PowerShell,執行dotnet build命令,整體還原專案包

  • 8.開啟專案,更改 shared/ABPMicServie.DbMigrator 專案的資料庫連結字串

  • 9.在資料庫中分別建立四個資料,然後更改專案中連結字串的IP,使用者名稱等

  • 10.在ABPMicServie.DbMigrator專案右鍵→偵錯→啟動新範例,執行遷移專案,如果連結字串設定的沒問題,執行成功後,資料庫中相應表就應該已經生成完成,可以檢視一下資料庫,看看相應的表是否已經建立完成

  • 11.接下來就是更改各個專案的連結字串 ,根據原有連結修改:

    • ABPMicServie.AuthServer
    • ABPMicServie.AdministrationService.HttpApi.Host
    • ABPMicServie.IdentityService.HttpApi.Host
    • ABPMicServie.ProductService.HttpApi.Host
    • ABPMicServie.SaasService.HttpApi.Host
  • 12.接下來要修改各個專案的中介軟體設定,包括 RabbitMQ,Redis,ElasticSearch等,由於修改基本涵蓋了,apps,gateways,services三個目錄下的所有專案,就不一一列舉了

  • 13.安裝tye,也是直接只用dotnet的控制檯工具

    dotnet tool install -g Microsoft.Tye --version "0.11.0-alpha.22111.1"
    
  • 14.安裝完成後,直接在專案目錄的執行.ps1檔案單擊右鍵→使用powershell執行,出現下面視窗

  • 15.在瀏覽器中開啟 localhost:8000,出現tye管理介面,具體每個服務的埠,紀錄檔都可以檢視

  • 16.存取web專案對應的埠,我這次對應的埠為 https://localhost:44321/ ,看到這個介面說明web服務已正常執行,接下來我們點選登入,進入登入介面

  • 17.微服務模式的登陸使用的統一認證方式,所以在登入介面實際是呼叫了ABPMicServie.AuthServer相關的服務,預設的管理使用者名稱:admin 密碼:1q2w3E* 這個密碼是在遷移檔案中設定的

  • 18.登入成功,看到如下頁面,就說明ABPvNext的微服務架構已順利執行成功,撒花