Sobes.tech
Senior

Чӣ гуна дар архитектураи ҳексагоналӣ, ки аз се унсур: адаптер, порт ва барномаи марказӣ иборат аст, дархости воридотӣ тавассути handler то модели domain чӣ гуна коркард мешавад?

sobes.tech AI

Ҷавоб аз AI

Дар архитектураи гексагоналӣ, дархости воридотӣ аввал ба адаптер (адаптер) мерасад, ки ҳамчун интерфейс байни олам ва барнома хизмат мекунад. Масалан, дар Go, HTTP handler дархостро қабул мекунад ва онро ба даъвати порт (порт) табдил медиҳад, ки интерфейсе мебошад, ки амалҳои дастрас барои барномаи марказиро муайян мекунад.

Порт логикаи бизнесро инкапсулейт мекунад ва шартномаҳои ҳамкорииро муайян мекунад. Handler усулҳои портиро даъват мекунад, додаҳои заруриро мегузорад. Барномаи марказӣ (модели домен) логикаро иҷро мекунад, бо асоси додаҳо аз порт, ва натиҷаро бармегардонад.

Масалан дар Go:

// Порт
type UserService interface {
    CreateUser(name string) error
}

// Адаптер (HTTP handler)
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)
    }
}

Инчунин, handler дархости хориҷиро ба даъвати порт мутобиқ мекунад, ки дар барномаи марказӣ (модели домен) иҷро мешавад.