1. 程式人生 > >.Net Core 商城微服務專案系列(八):購物車

.Net Core 商城微服務專案系列(八):購物車

最近加班有點多,一週五天,四天加班到11點+,心很累。原因是我當前在的這個組比較特殊,相當於業務的架構組,要為其它的開發組提供服務和監控。所以最近更新的也少,不過這個元旦三天假應該會更新三篇。

這篇是介紹一下商城的購物車,程式碼就不詳細介紹了,因為技術點都已經再前面幾篇介紹過了,無非就是產品的增刪該查,當然,資料的更新互動這一塊使用的是我們上一篇介紹的訊息佇列,比如購車的新增、修改、刪除。

商城到這塊功能方面就不打算繼續往下寫了,因為後面的功能都是圍繞業務展開,技術方面千篇一律,而我們的關注點在於技術,所以後面的商城系列,一定是圍繞著技術改造,現在還有幾個技術點沒有完成:

1.日誌使用Log4net+ELK (現在是直接將日誌通過tcp傳送到logstash)

2.新增SkyWalking呼叫鏈監控。

3.RabbitMQ消費端獨立成Windows服務,並新增監控。

4.使用Apollo,將配置於程式進行解耦。

5.新增定時任務、消費補償機制。

6.將服務部署到k8s中。

後面的打算是暫時把這幾個技術點給完成,這些都是我們再生產專案中直接用到的技術,一方面鞏固自己的掌握,另一方面可以給有興趣的人瞭解一下,這裡面,我暫時比較想完成的是第6個,有時間的話我會把這幾個服務部署到k8s中,這樣我們就不再需要依賴Consul的服務註冊和發現機制了。

 

先來看一下購物車完成的情況:

 

 業務其實很簡單,新增到購物車然後進行展示,程式碼也就不細講了,貼下主要的購物車程式碼:

/// <summary>
        /// 修改購物車產品數量
        /// </summary>
        public async Task<JsonResult> CountChange(int? CarID, int ProductID, int VersionID, string Operate)
        {
            var request = new AddCountRequest { CarId = CarID, ProductId = ProductID, VersionId = VersionID };
            
if(Operate== "reduce") { request.Num = -1; } else { request.Num = 1; } eventBus.Publish("ShopCarCountChange", request); return Json("OK"); } /// <summary> /// 新增購物車 /// </summary> public async Task<JsonResult> AddCar(int ProductID, int VersionID) { var getColorResponse = await shopCarService.GetColorAsync(new GetColorRequest { VersionId = VersionID }); //傳送新增購物車MQ var addShopCarRequest = new AddShopCarRequest { ProductID = ProductID, VersionID = VersionID }; try { eventBus.Publish("AddShopCar", addShopCarRequest); } catch(Exception ex) { Console.WriteLine(ex.Message); return Json("error"); } return Json("ok"); }

可以看到,購物車這裡對於資料庫的互動都是通過訊息佇列來完成的,服務的程式碼就不看了,就是普通的增刪改查。

到此。商城服務一共有5個,我們通過Consul看下:

 

 應該不會再新增服務了,後面會逐步的實現文章開始提到的幾個技術點改造。