hello world .net core 微服務框架 Viper
1、Viper是什麼?
Viper 是.NET平台下的Anno微服務框架的一個示例項目。入門簡單、安全、穩定、高可用、全平台可監控。底層通訊可以隨意切換thrift
grpc
。 自帶服務發現、調用鏈追蹤、Cron 調度、限流、事件總線、CQRS 、DDD、類似MVC的開發體驗,插件化開發
github: //github.com/duyanming/Viper
文檔地址: //duyanming.github.io/
體驗地址: //140.143.207.244/
如果對Viper不了解可以看:
1、 net core 微服務 快速開發框架 Viper 初體驗
2、打不死的小強 .net core 微服務 快速開發框架 Viper 限流
2、Viper微服務編寫一個Hello World
Anno微服務引擎使用非常簡單,Anno只專於與服務治理,對業務代碼深度解耦。下面我們來寫一個Hello World 服務,以此作為引子 讓我們了解Anno服務的創建有多簡單。
2.1、新建一個.Net Core 的控制台程序
讓我們新建一個.Net Core 的控制台程序作為服務插件的宿主程序,當然你也可以新建一個Window服務程序、Winform程序作為插件宿主程序。 這裡以.Net Core控制台程序為例。
2.2、 添加Anno依賴
添加依賴需要兩個,一個是 Anno.EngineData
,一個是Anno.Rpc.Server
。Anno.Rpc.Server
Anno服務的核心程序包, Anno.EngineData
是一個可選程序包,在這裡主要是因為業務插件(例如 Anno.Plugs.ViperService
)是一個和通訊解耦的模塊, 為了方便服務之間也可以調用 Anno.EngineData
裏面聲明了服務之間調用的接口約束。Thrift、Grpc 插件裏面做實現, 以此來解耦通訊組件和業務插件。
添加Anno Nuget依賴
Install-Package Anno.EngineData -Version 1.0.2.6
Install-Package Anno.Rpc.Server -Version 1.0.2.6
增加一個Anno配置文件
Anno配置文件的名稱為Anno.config
,我們直接複製一個過來修改就可以了。主要還是修改下服務的端口
、名稱
。 修改完城後我們就可以啟動服務了。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <!--0,0 第一位是 工作站,第二位數據中心 (所有的 AnnoService 的 兩位數不能重複例如不能存在【1,2】【1,2】) 可以存在【1,2】【2,1】 --> <IdWorker>0,1</IdWorker> <!--App名稱--> <AppName>HelloWorld</AppName> <!--監聽端口--> <Port>7012</Port> <!--權重--> <Weight>1</Weight> <!--功能 非Anno.Plugs 加入方式--> <FuncName></FuncName> <!--忽略的功能 Trace,Logic--> <IgnoreFuncName></IgnoreFuncName> <!--超時時間毫秒--> <TimeOut>20000</TimeOut> <!--註冊到的目標--> <Ts Ip="127.0.0.1" Port="7010"/> <IocDll> <!-- IOC 倉儲--> <Assembly>Anno.Repository</Assembly> </IocDll> <appSettings> <!-- 沒有用到Redis可以留空默認--> <add key="redisConn" value=""/> <add key="redisPrefix" value="HW:"/> <add key="redisExpiryDate" value="20"/> <add key="redisSwitch" value="false"/> </appSettings> </configuration>
到此為止一個HelloWorld服務已經編寫完成且成功啟動。每個一秒會向註冊中心註冊。另外我們沒有看到提示服務功能Tag
,這是因為我們還沒有編寫功能插件。 下一小節我們來編寫一個功能插件。
喜歡Viper的小夥伴們可以在體驗地址 通過 「集群總覽」 找到兩個服務 「HelloWorld-SoEasy」、「HelloWorld」,然後進入 API詳情,模擬調用API提前體驗一下網關如何調用服務,服務之間如何相互調用。後面也會帶着大家編寫一到兩個簡單的功能插件,以此加深對Viper的了解。
github: //github.com/duyanming/Viper
文檔地址: //duyanming.github.io/
體驗地址: //140.143.207.244/