eShopOnContainers .Net 微服務微軟官方Demo 分享3 Basket.Api

代碼

在這裏插入圖片描述

測試目錄兩個項目

Basket.FunctionalTests  測試功能, 需要連通第三方組建
	BasketScenarios.cs    購物車功能場景測試  
		做法是創建一個AspNetCore 的 TestServer 並且發起Http請求,驗證正確的響應狀態碼
		測試的功能點包括  Post basket , Get basket ,  Checkout basket , 因爲checkout 方法需要使用 Header中一個標識 ,所以擴展了一個類 HttpClientExtensions.cs 來模擬這個Header
		使用了AutoAuthorizeMiddleware Mock了驗證功能 , 在構建 TestServer的時候註冊了這個 BasketTestsStartup
	RedisBasketRepositoryTests.cs  Redis 的功能測試
		Redis的配置在 appsettings.Development.json 中配置的有

Api 目錄一個項目

Basket.API   
	Auth
		Swagger Api的驗證
	Controllers
		具體購物車的一些實現,增刪改查,還有一個checkout, 這個操作會推送一條 UserCheckoutAccepted事件到消息中
	Grpc
		gRpc服務的實現類, 類似WCF實現契約的具體類文件 , 不過這裏沒有契約接口了, 用的Proto協議文件.
	Infrastructure
		ActionResult
			異常返回的結果類, 這裏只標記了StatusCode 爲500
		Exceptions
			這裏的類沒啥用
		Filters
			全局異常捕獲過濾器,  Model的參數驗證過濾器, 按自己的 JsonErrorReponse格式返回
		Middlewares
			權限驗證,  中斷中間件, 模擬手動停用,啓用服務
	IntegrationEvents
		EventHandling  
			裏面有OrderStarted  和 ProductPriceChanged 兩個事件處理類
		Events 
			裏面有3消息實體 OrderStarted , ProductPriceChanged , UserCheckoutAccepted , 都繼承基類 Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events.EntergrationEvent , 說明垮項目被引用的一些基類都寫在了BuildingBlocks裏面
			事件發佈:當用戶點擊購物車結算時,發佈用戶結算事件。
			事件消費:訂單創建成功後,進行購物車的清空
			事件消費:商品價格更新後,進行購物車相關商品的價格同步
	Model
		一些實體類文件
	Proto
		gRpc的Proto協議文件. VS在編譯的時候自動根據項目文件配置的類別生成和協議文件相同的Server抽象服務類或者是client調用類, 需要自己去繼承這個類並實現協議中的方法. gRpc 只能在http/2下面使用 
	Services
		身份驗證獲取類, 從HttpContext 中獲取User信息 , 這裏封裝一了一個接口是爲了給單元測試做Mock用的.

下一個項目會分享 Ordering 服務

參考文檔
https://github.com/dotnet-architecture/eShopOnContainers/wiki/gRPC#grpc-usage-in-eshoponcontainers
https://www.cnblogs.com/sheng-jie/p/10218839.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章