1、前言
微服務架構概念的提出已經有非常長一段時間了,但在近期幾年卻開始頻繁地出現,大家都著手升級成微服務架構,使用著各種技術,大家認為框架有服務治理就是微服務,實現單一協議的服務呼叫,微服務雖然沒有太明確的定義,但是我認為服務應該是一個或者一組相對較小且獨立的功能單元,可以自由組合拆分,針對於業務模組的 CRUD 可以註冊為服務,而每個服務都是高度自治的,從開發,部署都是獨立,而每個服務只做單一功能,利用領域驅動設計去更好的拆分成粒度更小的模組,而框架本身提供了多種協議,如ws,tcp,http,mqtt,rtp,rtcp, 並且有各種功能的中介軟體,所開發的業務模組,通過框架可以適用於各種業務場景,讓開發人員專注於業務開發這才是真正意義上的微服務。
以上只是談下微服務,避免一些人走向誤區。而這篇文章主要介紹下surging如何使用swagger 元件測試業務模組
2、如何使用swagger
surging 整合了Kestrel元件並且擴充套件swagger元件,以下介紹下如何使用swagger元件
xml文件檔案設定
針對於 swagger 需要生成 schema,那麼需要載入介面模組的xml文件檔案,可以通過專案-屬性-生成-xml文件檔案 進行設定,如下圖所示
通過以上設定,如果掃描載入業務模組,可以使用dotnet publish -c release 生成模組檔案,如下圖所示
檔案配置
使用swagger ,如果使用官方提供的surging 引擎的話,就需要開啟Kestrel元件,如以下配置所示
"Surging": { "Ip": "${Surging_Server_IP}|127.0.0.1", "WatchInterval": 30, "Port": "${Surging_Server_Port}|98", "MappingIp": "${Mapping_ip}", "MappingPort": "${Mapping_Port}", "Token": "true", "MaxConcurrentRequests": 20, "ExecutionTimeoutInMilliseconds": 30000, "Protocol": "${Protocol}|None", //Http、Tcp、None "RootPath": "${RootPath}|D:\\userapp", "Ports": { "HttpPort": "${HttpPort}|280", "WSPort": "${WSPort}|96" }, "RequestCacheEnabled": false, "Packages": [ { "TypeName": "EnginePartModule", "Using": "${UseEngineParts}|DotNettyModule;NLogModule;MessagePackModule;ConsulModule;KestrelHttpModule;WSProtocolModule;EventBusRabbitMQModule;CachingModule;" } ] }
以下是配置swagger,如果不新增以下配置,可以禁用swagger
"Swagger": { "Version": "${SwaggerVersion}|V1", // "127.0.0.1:8500", "Title": "${SwaggerTitle}|Surging Demo", "Description": "${SwaggerDes}|surging demo", "Contact": { "Name": "API Support", "Url": "https://github.com/dotnetcore/surging", "Email": "fanliang1@hotmail.com" }, "License": { "Name": "MIT", "Url": "https://github.com/dotnetcore/surging/blob/master/LICENSE" } }
通過以上設定,就可以通過http://127.0.0.1:280/swagger進行訪問,效果如下圖所示
測試上傳檔案
測試下載檔案
Post 測試
GET 測試
五、總結
通過swagger 引擎元件能夠生成業務介面文件,能夠更好的和團隊進行協作,而surging計劃是去閘道器中心化,會擴充套件'關卡(stage)'引擎元件以代替閘道器,同時也會擴充套件更多的通訊協議,也歡迎大家擴充套件引擎元件,讓生態更強大。