Sobes.tech
Senior

Hexagonal архитектурасында кирүүчү суроо-талап handler аркылуу domain моделине чейин кандай иштетилет? Бул архитектура үч элементтен турат: адаптер, порт жана борбордук колдонмо.

sobes.tech AI

AIден жооп

Гексагоналдык архитектурада, кирүүчү суроо биринчи кезекте адаптерге (адаптер) түшөт, ал сырткы дүйнө менен тиркеменин ортосунда интерфейс кызматын аткарат. Мисалы, Goда HTTP иштетүүчү (handler) суроону кабыл алып, аны портко (port) чакырууга айлантат, ал интерфейс болуп саналат жана борбордук тиркемеге жеткиликтүү операцияларды аныктайт.

Порт бизнес логиканы камтыйт жана өз ара аракеттенүү келишимдерин аныктайт. Иштетүүчү порттун методдорун чакырып, керектүү маалыматтарды өткөрөт. Борбордук тиркеме (домен модел) логиканы ишке ашырат, порттон алынган маалыматтарга негизделип, натыйжаны кайтарат.

Goда мисал:

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

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

Ошентип, иштетүүчү сырткы суроону портко ылайыкташтырып, ал борбордук тиркемеде (домен моделинде) ишке ашырылат.