Sobes.tech
Senior

როგორ ხდება შემომავალი მოთხოვნის გადამუშავება handler-ის მეშვეობით დომენის მოდელამდე ჰექსაგონალური არქიტექტურაში, რომელიც შედგება სამი ელემენტისგან: ადაპტერი, პორტი და ცენტრალური აპლიკაცია?

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-ი ადაპტირებს გარე მოთხოვნას პორტის გამოძახებად, რომელიც განხორციელებულია ცენტრალურ აპლიკაციაში (დომენ მოდელი).