Флюкс архитехтур.
Флюкс архитехтур.

Флюкс нь фейсбүүк компаниас SPA буюу single page application-ний хөгжүүлэхэд зориулан гаргасан архитектур юм. Флюкс архитектурыг гаргаж ирэх болсон шалтгаан нь MVC буюу Model View Controller архитектурын дагуу аппликейшин хөгжүүлэхэд тулгарч буй асуудлыг шийдвэрлэх зорилгоор хөгжүүлсэн. MVC архитектурын дагуу том хэмжээний аппликейшин хөгжүүлэхэд хоорондоо хамааралтай олон тооны компонентууд үүсдэг. Энэ нь системийн хаана, ямар өөрчлөлт хийснээс хамаарч алдаа хаана гарч байгаа, түүнийг хайж олох, аль компонент буруу ажиллаж байгаа зэргийг тодорхойлох нь маш хүндрэлтэй болдог. Иймд фейсбүүк компаний хөгжүүлэгчид дээрх хүндрэлтэй байдлыг үүсгэж байгаа шалтгаан нь  ашиглаж байгаа архитектураас шалтгаалж байгааг тодорхойлсон. Иймд бие даасан, бусад компонентоос хамааралгүй, өгөгдлийн нэг чигийн урсгалтай Флюкс архитектурыг гаргаж ирсэн.
















                                                                    Зураг 1. MVC ашигласан 


Флюкс архитектур нь Dispatcher/диспетчер/, Stores/Хадгалагч/, болон Views/Харагдац/ (React components) гэсэн үндсэн гурван хэсэгтэй. Эдгээр нь Model-View-Controller(MVC)-оос архитектураас ялгаатай ойлголт юм. Controller/удирдлага/ нь Флюкс аппликейшинд controller-views, views хэлбэрээр байдаг боловч ихэнх тохиолдолд дээд шатлалын хадгалагчаас мэдээлэл авах болон өөрийн доод шатлалын харагдацад мэдээллийг доош нь дамжуулдаг үйлдлийг гүйцэтгэдэг. Нэмж хэлэхэд Action creators/Үйлдлийн үүсгэгч/-ийг нь аппликейшинд боломжтой бүх API-ийн утгын өөрчлөлтийг дэмждэг. Үүнийг Флюксийн шинэчлэл хийх процессын 4 дахь хэсэг гэж ойлгож болно. 





















                                                                                Зураг 2. Флюкс архитехтур








                                                   

                                                     Зураг 3. Флюксийн мэдээллийн урсгал


Store /Хадгалагч/:

Хадгалагч болон State/төлөв/ тусдаа ялгаатай ойлголтууд юм. Төлөв бол хадгалагчид хадгалагдаж байгаа мэдээллүүд гэж ойлгож болно. Харин хадгалагч бол төлөвийг тусгай арга, хэрэгсэлээр дамжуулан удирддаг.

Хадгалагч нь олон объектыг удирддаг бөгөөд тодорхой объектуудын талаархи үнэний нэг эх сурвалжтай байдаг. Аппликейшин нь бусад хадгалагчаас хамааралгүй олон тооны Хадгалагчтай байж болно. Төлөвийг өөрчлөх үйлдлийн хүсэлтийг диспетчерээс хүлээн авах замаар хийнэ. Хадгалагч нь бүх үйлдлүүдийг сонсож тэдгээрийн алийг нь гүйцэтгэхийг шийддэг. Энэ нь ихэвчлэн switch оператор ашиглан гүйцэтгэнэ. Хадгалагч төлөвийн өөрчлөлтийг хийсний дараа өөрчлөлтийн ивентийг харагдац руу цацдаг. Хадгалагч нэг утгаар бол ивент цацагч юм.




















Dispatcher /диспетчер/

Диспетчер бол Флюкс аппликейшиний бүх өгөгдлийн урсгалыг удирддаг төв зангилаа юм. Диспетчер нь бүтгэгдсэн хадгалагчид руу үйлдлүүдийг цацдаг/мэдээлдэг/ энгийн нэг объект юм. Диспетчерт үйлдэл орж ирэх үед бүртгэлтэй хадгалагч нар луу үйлдлийг дамжуулдаг.

View /харагдац/

Харагдац бол хэрэглэгчийн интерфейсийн компонент юм. Энэ нь мод бүтэцтэй байдаг. Хэрэглэгчийн харагдац дээрх хийх үйлдлийг зохицуулах болон хэрэглэгчийн интерфейсийг зурж үзүүлэх үйлдлийг хариуцдаг. Харагдац нь хадгалагчийн цацруулсан өөрчлөлтийн ивентийг сонсож харагдацийг дахин зурж харуулдаг. Мөн хадгалагч руу хандаж мэдээлэл авах болон модны мөчир буюу доод шатлалын компонент руу мэдээллийг дамжуулдаг.

Action /үйлдэл/ болон Action creater /үйлдлийн үүсгэгч/

Үйлдэл нь тухайн үйлдлийг хийхэд шаардлагатай бүх мэдээллийг агуулсан энгийн объект юм. Үйлдэл нь тухайн үйлдлийн төрлийг заасан талбарыг тодорхойлсон байдаг. Үйлдлийг үүсгэгч нь тухайн үйлдлийг үүсгэхэд ашиглах функцуудыг агуулсан байдаг.

Өгөгдлийн урсгал

Флюкс архитектуртай аппликейшиний өгөгдөл буюу мэдээллийн урсгал нэг чиглэлтэй.







Харагдац болон веб API-аас харагдацын мэдээллийг өөрчлөх, шинэчлэх үед үйлдлүүдийн үүсгэгчийг дуудаж үйлдлийг үүсгэдэг. Үүний дараа диспетчерт үйлдлийг мэдэгдэж түүгээр дамжуулан хадгалагч бүрт илгээдэг. Хадгалагч үйлдлүүдийг хүлээн авч өөр хамааралтай, биелүүлэх эсэхийг шийдэж үйлдэлд харгалзах төлөвийн мэдээллийг өөрчлөлтийг хийдэг. Хадгалагч өөрчлөлт хийсний дараа өөрчлөл хийсэн тухай ивентийг харагдац руу цацдаг. Харагдац үүнийг хүлээн авч мэдээллээ шинэчлээд харагдацыг дахин зурж үзүүлдэг.











Мэдээ бэлтгэсэн: Мэдээллийн технологийн салбарын ЭША У.Батхишигт

Эх сурвалж: https://facebook.github.io/flux/

http://fluxxor.com/what-is-flux.html

https://www.freecodecamp.org/news/an-introduction-to-the-flux-architectural-pattern-674ea74775c9/


Бусад мэдээлэл