
前言
Adnc是一個輕量級的.Net Core微服務開發框架,同樣適用於單體架構系統的開發。
如果只是想本地調試,只需要安裝必備軟件,必備軟件除開發工具外,其它軟件建議大家都使用`docker`安裝。如何安裝`docker`,官方網站上有各種環境下的 安裝指南。
微服務最核心的服務自動注冊/發現/配置,`adnc`使用`consul`實現,因為在代碼中做了限制,調試環境不會啟動。當然如果你已經安裝好了`cosnul`環境,也可以自己開啟,請修改如下3個文件。建議先不要開啟`cosnul`相關功能,先快速跑起來,`consul`如何配置,請參考 如何用docker consul部署到服務器
如果只是想本地調試,只需要安裝必備軟件,必備軟件除開發工具外,其它軟件建議大家都使用`docker`安裝。如何安裝`docker`,官方網站上有各種環境下的 安裝指南。
微服務最核心的服務自動注冊/發現/配置,`adnc`使用`consul`實現,因為在代碼中做了限制,調試環境不會啟動。當然如果你已經安裝好了`cosnul`環境,也可以自己開啟,請修改如下3個文件。建議先不要開啟`cosnul`相關功能,先快速跑起來,`consul`如何配置,請參考 如何用docker consul部署到服務器
//program.cs
if (env.IsProduction() || env.IsStaging())
{
var configuration = cb.Build();
//從consul配置中心讀取配置
var consulOption = configuration.GetSection("Consul").Get<ConsulConfig>();
cb.AddConsul(new[] { consulOption.ConsulUrl }, consulOption.ConsulKeyPath);
}
//startup.cs
if (env.IsProduction() || env.IsStaging())
{
//啟動后自動注冊服務到consul
app.RegisterToConsul(_srvRegistration.GetConsulConfig());
}
//ServiceRegistrationHelper.cs
//獲取用戶認證、鑒權服務
var authServerAddress = (_env.IsProduction() || _env.IsStaging()) ? "adnc.usr.webapi" : "http://localhost:5010";
base.AddRpcService<IAuthRpcService>(authServerAddress, policies);
演示
GitHub
必備軟件有哪些
1. Visual Studio 2019
Adnc
基於.Net Core 3.1
開發,並且用了部分C# 8.0
語法,所以需要安裝visual studio 2019
。
2. Redis
#新建/data/redis目錄
cd /
mkdir data
cd data
mkdir redis
#進入redis目錄
cd reids
#拉取redis鏡像文件
docker pull redis
#從官網下載redis.conf,並修改配置
wget http://download.redis.io/redis-stable/redis.conf
- 修改上面下載的配置文件
redis.conf
bind 127.0.0.1
#注釋掉這部分,這是限制redis只能本地訪問
protected-mode no
#默認yes,開啟保護模式,限制為本地訪問
daemonize no
#默認no,改為yes意為以守護進程方式啟動,可后台運行,除非kill進程(可選),改為yes會使配置文件方式啟動redis失敗,請設置成no.
dir ./
#輸入本地redis數據庫存放文件夾(可選)
appendonly yes
#redis持久化(可選)
#啟動redis容器,監聽13379端口,並掛載redis.conf與data目錄
docker run -p 13379:13379 --name redis -v /root/data/redis/redis.conf:/etc/redis/redis.conf -v /root/data/redis/data:/data -d redis redis-server /etc/redis/redis.conf
- 修改
Adnc.Usr.WebApi
、Adnc.Cus.WebApi
、Adnc.Maint.WebApi
3個微服務appsettings.development.json
文件的redis
節點信息
"Redis": {
"MaxRdSecond": 120,
"EnableLogging": false,
"LockMs": 5000,
"SleepMs": 300,
"dbconfig": {
"ConnectionStrings": [
"你的redis地址:13379,password=你的密碼,poolsize=50,defaultDatabase=1,prefix="
],
"ReadOnly": false
}
}
3. rabbitmq
#拉取rabbitmq鏡像
docker pull rabbitmq:management
#啟動容器,監聽18578,13572端口
docker run --name=rabbitmq -p 18578:15672 -p 13572:5672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=你的密碼 -d rabbitmq:management
如果安裝成功,我們訪問
http://服務器IP:18578
,會出現登錄頁面。
- 修改
Adnc.Usr.WebApi
、Adnc.Cus.WebApi
、Adnc.Maint.WebApi
3個微服務appsettings.development.json
文件的RabbitMq
節點信息
"RabbitMq": {
"HostName": "服務器Ip",
"VirtualHost": "虛擬主機",
"Port": "13572",
"UserName": "用戶名",
"Password": "密碼"
}
4. mongodb
#拉取mongodb鏡像
docker pull mongo
#啟動容器,監聽13017端口並掛載data與backup目錄
docker run --name mongo -p 13017:27017 -v /root/data/mongo:/data/db -v /root/data/mongo/backup:/data/backup -d mongo --auth
- 修改
Adnc.Usr.WebApi
、Adnc.Cus.WebApi
、Adnc.Maint.WebApi
3個微服務appsettings.development.json
文件的MongoDb節點信息
"MongoDb": {
"ConnectionStrings": "mongodb://用戶名:密碼@服務器Ip:13017/Logs",
"CollectionNamingConvention": 2,
"PluralizeCollectionNames": true
}
- 修改
nlog.config
monogdb
配置部分
5. mysql
#拉取mysql鏡像
docker pull mariadb
#啟動容器,監聽13308端口,並掛載data與logs目錄
docker run --name mariadb -p 13308:3306 -e MYSQL_ROOT_PASSWORD=你的root密碼 --restart=always -v /root/data/mariadb/conf:/etc/mysql -v /root/data/mariadb/logs:/var/log/mysql -v /root/data/mariadb/data:/var/lib/mysql -d mariadb
- 修改
Adnc.Usr.WebApi
、Adnc.Cus.WebApi
、Adnc.Maint.WebApi
3個微服務appsettings.development.json
文件的mysql節點信息
"Mysql": {
"WriteDbConnectionString": "Server=服務器ip;Port=13308;database=庫名;uid=賬號;pwd=密碼;"
}
- 3個微服務的
sql
腳本在doc
目錄中,請自行導入
必備軟件安裝完成,下面介紹如何啟動。
啟動服務端ServerApi
- 修改
Adnc.Usr.WebApi
、Adnc.Cus.WebApi
、Adnc.Maint.WebApi
、Adnc.Infr.Gateway
4個微服務的launchSettings.json
文件
注釋如下代碼,這是啟動掛載SkyAPM
的配置,因為你沒有安裝skywalking
環境,注釋就可以了。
//注釋下面代碼
"SKYWALKING__SERVICENAME": "adnc.usr.webapi.dev",
"ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "SkyAPM.Agent.AspNetCore"
- 右鍵解決方案,選擇多個項目啟動,並點擊確定
需要啟動4個項目:
Adnc.Infr.Gateway
、Adnc.Cus.WebApi
、Adnc.Maint.WebApi
、Adnc.Usr.WebApi
。
實際開發過程中並不需要這樣,這樣介紹主要是為了快速在本地跑起來。
- 回到
Visual Studio 2019
主界面,點擊啟動,這樣后台接口與網關就啟動了。
啟動前端ClientApp
- 使用
visual code
打開前端項目ClientApp
前端使用
Vue
開發,需要安裝很多依賴包
#安裝依賴包
npm install --registry=https://registry.npm.taobao.org
#啟動前端頁面,地址:localhost:5001,這里請耐心等待,成功后會自動打開瀏覽器
npm run dev
- 啟動成功后,默認頁面是登錄頁面,登錄賬號:
alpha2008
密碼:alpha2008
問題交流
- 企 鵝 群:780634162
- 博 客:https://www.cnblogs.com/alphayu
- 項目網址:https://aspdotnetcore.net
License
MIT
Free Software, Hell Yeah!