小編今天帶大家了解YoyoGo微服務(wù)框架的基本概念是什么,文中知識點介紹的非常詳細(xì)。覺得有幫助的朋友可以跟著小編一起瀏覽文章的內(nèi)容,希望能夠幫助更多想解決這個問題的朋友找到問題的答案,下面跟著小編一起深入學(xué)習(xí)“YoyoGo微服務(wù)框架的基本概念是什么”的知識吧。
專注于為中小企業(yè)提供成都做網(wǎng)站、網(wǎng)站制作服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)南召免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
Copy
package main
import ...
func main() {
YoyoGo.CreateDefaultBuilder(func(router Router.IRouterBuilder) {
router.GET("/info",func (ctx *Context.HttpContext) { // 支持Group方式
ctx.JSON(200, Context.M{"info": "ok"})
})
}).Build().Run() //默認(rèn)端口號 :8080
}
HostBuilder本身是一個抽象概念(類),可以衍生出多種HostBuilder。
比如:Web Host Builder , RPC Host Builder , General Host Builder等等。
上面的代碼用CreateDefaultBuilder函數(shù),創(chuàng)建的就是一個默認(rèn)的WebHostBuilder,既然是WebHostBuilder那默認(rèn)最重要的函數(shù),那當(dāng)然是用于Http路由的聲明路由函數(shù)。HostBuilder本身包含了很多定義程序生命周期的函數(shù):
UseConfiguration : 用于定義配置文件
Configure : 用于定義ApplicationBuilder,它是管理程序如何構(gòu)建的一組方法
ConfigureServices : 用于定義IOC容器
OnApplicationLifeEvent : 用于定義程序生命周期的事件通知
Build : 用于生成最終可運行的Host對象
如果說程序是由Host對象裝載的話,Host的構(gòu)造就是由ApplicationBuilder完成的。Host本身就是由ApplicationBuilder與Server共同構(gòu)成的。這兩個對象一一對應(yīng),ApplicationBuilder用于構(gòu)造,Server用于承載具體的應(yīng)用協(xié)議。比如WebHost就是由WebApplicationBuilder構(gòu)造并提供了ServeHTTP函數(shù),由HttpServer來承載,共同完成的。
RouterBuilder是由WebApplicationBuilder衍生出來的路由定義對象,用于聲明GET,POST,PUT,DELETE等類型的請求處理程序。也就是說沒有創(chuàng)建WebHostBuilder就沒有WebApplicationBuilder也就沒有RouterBuilder;框架本身就是支持多種Server協(xié)議的。
路由函數(shù)定義:
Copy
func(router *Router.RouterGroup) { }
上面demo中就通過它完成了一個GET請求,并返回JSON: {"info":"ok"}.
RouterBuilder本身還支持Group的方式,將一組API進(jìn)行統(tǒng)一的URL定義:
Copy
router.Group("/v1/api", func(router *Router.RouterGroup) {
router.GET("/info", GetInfo)
router.GET("/hello", GetHello)
})
通過以上代碼將生成 /v1/api/info 和 /v1/api/hello 兩個GET請求路由地址。
創(chuàng)建HostBuilder后,通過Build函數(shù)得到了最終可運行的Host對象(**Build().Run() **)。創(chuàng)建Host對象的同時,其實也完成了Server對象的創(chuàng)建,Host與Server一一對應(yīng)的。Host表示了一個可運行的宿主,它負(fù)責(zé)管理整個程序的生命周期;而Server則是更為具體的服務(wù)類型,比如Http,xxRPC。Server更多是一種通訊協(xié)議上的表達(dá)。
在上面的demo中,我們定義了一個默認(rèn)的WebHostBuilder,但是它所支持的內(nèi)容較少只提供了最基本的Host定義,那如何定制一個WebHostBuilder呢,如下例子:
Copy
func CreateCustomBuilder() *Abstractions.HostBuilder {
return YoyoGo.NewWebHostBuilder().
Configure(func(app *YoyoGo.WebApplicationBuilder) {
app.UseEndpoints(unc(router Router.IRouterBuilder) {
router.GET("/info",func (ctx *Context.HttpContext) {
ctx.JSON(200, Context.M{"info": "ok"})
})
})
}
通過定制,我們可以使用完整的HostBuilder構(gòu)建函數(shù)來構(gòu)建應(yīng)用程序。然后通過如下例子將它運行起來:
Copy
package main
import ...
func main() {
CreateCustomBuilder().Build().Run() //默認(rèn)端口 :8080
}
至此我們介紹了YoyoGo微服務(wù)框架的基本概念:一個Web服務(wù)是由 WebHostBuilder -> WebApplicationBuilder -> HttpServer -> WebHost 組成。
感謝大家的閱讀,以上就是“YoyoGo微服務(wù)框架的基本概念是什么”的全部內(nèi)容了,學(xué)會的朋友趕緊操作起來吧。相信創(chuàng)新互聯(lián)小編一定會給大家?guī)砀鼉?yōu)質(zhì)的文章。謝謝大家對創(chuàng)新互聯(lián)網(wǎng)站的支持!