溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

YoyoGo微服務(wù)框架的基本概念是什么

發(fā)布時(shí)間:2022-01-17 17:07:37 來(lái)源:億速云 閱讀:192 作者:柒染 欄目:云計(jì)算

小編今天帶大家了解YoyoGo微服務(wù)框架的基本概念是什么,文中知識(shí)點(diǎn)介紹的非常詳細(xì)。覺(jué)得有幫助的朋友可以跟著小編一起瀏覽文章的內(nèi)容,希望能夠幫助更多想解決這個(gè)問(wèn)題的朋友找到問(wèn)題的答案,下面跟著小編一起深入學(xué)習(xí)“YoyoGo微服務(wù)框架的基本概念是什么”的知識(shí)吧。

從一個(gè)簡(jiǎn)單Web服務(wù)Demo出發(fā)

  
  
  

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)端口號(hào) :8080
}

框架基本概念

1.HostBuilder

HostBuilder本身是一個(gè)抽象概念(類(lèi)),可以衍生出多種HostBuilder。
比如:Web Host Builder , RPC Host Builder , General Host Builder等等。
上面的代碼用CreateDefaultBuilder函數(shù),創(chuàng)建的就是一個(gè)默認(rèn)的WebHostBuilder,既然是WebHostBuilder那默認(rèn)最重要的函數(shù),那當(dāng)然是用于Http路由的聲明路由函數(shù)。HostBuilder本身包含了很多定義程序生命周期的函數(shù):

  1. UseConfiguration : 用于定義配置文件

  2. Configure : 用于定義ApplicationBuilder,它是管理程序如何構(gòu)建的一組方法

  3. ConfigureServices : 用于定義IOC容器

  4. OnApplicationLifeEvent : 用于定義程序生命周期的事件通知

  5. Build : 用于生成最終可運(yùn)行的Host對(duì)象

2.ApplicationBuilder

如果說(shuō)程序是由Host對(duì)象裝載的話,Host的構(gòu)造就是由ApplicationBuilder完成的。Host本身就是由ApplicationBuilder與Server共同構(gòu)成的。這兩個(gè)對(duì)象一一對(duì)應(yīng),ApplicationBuilder用于構(gòu)造,Server用于承載具體的應(yīng)用協(xié)議。比如WebHost就是由WebApplicationBuilder構(gòu)造并提供了ServeHTTP函數(shù),由HttpServer來(lái)承載,共同完成的。

3.RouterBuilder

RouterBuilder是由WebApplicationBuilder衍生出來(lái)的路由定義對(duì)象,用于聲明GET,POST,PUT,DELETE等類(lèi)型的請(qǐng)求處理程序。也就是說(shuō)沒(méi)有創(chuàng)建WebHostBuilder就沒(méi)有WebApplicationBuilder也就沒(méi)有RouterBuilder;框架本身就是支持多種Server協(xié)議的。
路由函數(shù)定義:

  
  
  

Copy

func(router *Router.RouterGroup) { }

上面demo中就通過(guò)它完成了一個(gè)GET請(qǐng)求,并返回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)
})

通過(guò)以上代碼將生成 /v1/api/info 和 /v1/api/hello 兩個(gè)GET請(qǐng)求路由地址。

4.Host

創(chuàng)建HostBuilder后,通過(guò)Build函數(shù)得到了最終可運(yùn)行的Host對(duì)象(**Build().Run() **)。創(chuàng)建Host對(duì)象的同時(shí),其實(shí)也完成了Server對(duì)象的創(chuàng)建,Host與Server一一對(duì)應(yīng)的。Host表示了一個(gè)可運(yùn)行的宿主,它負(fù)責(zé)管理整個(gè)程序的生命周期;而Server則是更為具體的服務(wù)類(lèi)型,比如Http,xxRPC。Server更多是一種通訊協(xié)議上的表達(dá)。

5.定制WebHostBuilder

在上面的demo中,我們定義了一個(gè)默認(rèn)的WebHostBuilder,但是它所支持的內(nèi)容較少只提供了最基本的Host定義,那如何定制一個(gè)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"})
                     })
})
}

通過(guò)定制,我們可以使用完整的HostBuilder構(gòu)建函數(shù)來(lái)構(gòu)建應(yīng)用程序。然后通過(guò)如下例子將它運(yùn)行起來(lái):

  
  
  

Copy

package main
import ...

func main() {
 CreateCustomBuilder().Build().Run() //默認(rèn)端口 :8080
}

YoyoGo微服務(wù)框架的基本概念是什么

至此我們介紹了YoyoGo微服務(wù)框架的基本概念:一個(gè)Web服務(wù)是由 WebHostBuilder -> WebApplicationBuilder -> HttpServer -> WebHost 組成。
YoyoGo微服務(wù)框架的基本概念是什么

感謝大家的閱讀,以上就是“YoyoGo微服務(wù)框架的基本概念是什么”的全部?jī)?nèi)容了,學(xué)會(huì)的朋友趕緊操作起來(lái)吧。相信億速云小編一定會(huì)給大家?guī)?lái)更優(yōu)質(zhì)的文章。謝謝大家對(duì)億速云網(wǎng)站的支持!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI