Sobes.tech
Senior

Ինչպես է մուտքային հարցումը մշակվում handler-ի միջոցով մինչև domain մոդելը հեքսագոնալ ճարտարապետությունում, որը բաղկացած է երեք տարրերից՝ ադապտեր, պորտ և կենտրոնական հավելված։

sobes.tech AI

Պատասխան AI-ից

Հեքսագոնալ ճարտարապետության մեջ, մուտքային հարցումը առաջին հերթին հասնում է ադապտորին (adapter), որը ծառայում է որպես ինտերֆեյս արտաքին աշխարհի և ծրագրի միջև։ Օրինակ, Go-ում HTTP handler-ը ընդունում է հարցումը և վերածում այն պորտի (port) կոչի, որը հանդիսանում է ինտերֆեյս, սահմանելով գործողությունները, որոնք հասանելի են կենտրոնական ծրագրին:

Պորտը թաքննում է բիզնես տրամաբանությունը և սահմանում է փոխազդեցության պայմանագրերը։ 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-ը հարմարեցնում է արտաքին հարցումը պորտի կոչին, որը իրականացվում է կենտրոնական ծրագրում (դոմեն մոդել):