前言:前面準備了那麼久的準備工作,現在終於可以開始構建我們自己的服務了。這篇博客就讓我們一起構建自己的第一個服務 審計日誌。 首先我們先創建兩個項目,一個控制台的服務啟動項目,一個業務的實現項目。(註:控制台項目可以引用業務項目,也可以不引用業務項目。因為surging支持熱部署) 在服務啟動項目中 ...
前言:前面準備了那麼久的準備工作,現在終於可以開始構建我們自己的服務了。這篇博客就讓我們一起構建自己的第一個服務---審計日誌。
首先我們先創建兩個項目,一個控制台的服務啟動項目,一個業務的實現項目。(註:控制台項目可以引用業務項目,也可以不引用業務項目。因為surging支持熱部署)
在服務啟動項目中引用我們所需要的surging組件,
服務配置:
當然,我們之前所描述的rabbitmq的配置:。
ok,接下來就是對我們的服務進行代碼編寫了,,介面註意,服務的命名後面必須是以“Service”結束,服務介面必須繼承IServiceKey
服務實現:,ModuleName(""),因為一個介面可能有多個實現,,所以這裡的ModuleName就是為了調用的時候區分我們要用到哪個實現,如果只有一個實現,可以不用這個屬性,另外,實現只要繼承ProxyServiceBase跟自己定義的服務介面就可以了。
需要註意的是:surging的介面不支持泛型,編碼採用json方式傳遞數據,客戶端調用的時候需要用到方法的參數名稱。
客戶端:首先客戶端在nuget中添加我們所需要的surging組件,
客戶端的配置:,當然不能少了rabbitmq的配置
,在客戶端只需要配置rabbitmq的連接地址就可以了。
測試代碼:,獲取代理實例,客戶端服務調用測試代碼:,
設置審計日誌跟客戶端為啟動項目:,
測試結果:,完美,調用成功。
surging微服務框架:官方推薦使用UseMessagePackCodec的編碼方式,萬次調用效率在1200ms左右(調用需要引用介面(獲取代理實例ServiceLocator.GetService<IServiceProxyFactory>()))。
在這篇博客中我採用json的編碼方式,surging測試萬次調用在3600ms左右。
採用json的編碼方式,服務之間的調用await proxy.Invoke<object>(model, "api/userManager/singleByEmailAndPassword", "User");都是通過這句代碼來實現的。