Sobes.tech
Senior

Kaip įeinantis užklausa per handlerį apdorojama iki domeno modelio heksagoninėje architektūroje, kuri sudaryta iš trijų elementų: adapterio, uosto ir centrinės programos?

sobes.tech AI

Atsakymas iš AI

Heksagoninės architektūros atveju, įeinantis užklausimas pirmiausia patenka į adapterį, kuris tarnauja kaip sąsaja tarp išorinio pasaulio ir programos. Pavyzdžiui, Go kalboje HTTP tvarkyklė priima užklausą ir ją paverčia skambučiu į portą, kuris yra sąsaja, apibrėžianti operacijas, prieinamas centrinėje programoje.

Portas inkapsuliuoja verslo logiką ir apibrėžia sąveikos sutartis. Tvarkyklė kviečia portą metodus, perduodama reikalingus duomenis. Centrinė programa (domeno modelis) įgyvendina logiką, remdamasi portu gautais duomenimis, ir grąžina rezultatą.

Pavyzdys Go kalba:

// Portas
type UserService interface {
    CreateUser(name string) error
}

// Adapteris (HTTP tvarkyklė)
func CreateUserHandler(svc UserService) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        name := r.FormValue("name")
        err := svc.CreateUser(name)
        if err != nil {
            http.Error(w, err.Error(), http.StatusInternalServerError)
            return
        }
        w.WriteHeader(http.StatusCreated)
    }
}

Šiuo būdu, tvarkyklė pritaiko išorinį užklausą skambutis į portą, kuris yra įgyvendintas centrinėje programoje (domeno modelyje).