Кіріспе
Веб-сайттарды әзірлеуді қолдау үшін бағдарламалық жасақтама Веб-фреймворк (WF) немесе веб-қосымшалар фреймворк (WAF) - веб-қосымшаларды, соның ішінде веб-қызметтерді, веб-ресурстарды және веб-АПИ әзірлеуді қолдау үшін жасалған бағдарламалық жасақтама. Веб-кеңдіктер веб-қосымшаларды құру мен орналастырудың стандартты тәсілін ұсынады. Веб-кеңестер веб-жекешелікпен байланысты жалпы іс-шараларды автоматтандыруға бағытталған. Мысалы, көптеген веб-фреймворктер деректер қорына қол жеткізу, шаблондар фреймворктері және сессияларды басқару үшін кітапханалар ұсынады және олар кодты қайта пайдалануға жиі ықпал етеді. Олар көбінесе динамикалық веб-сайттарды дамытуға бағытталған болса да, олар статикалық веб-сайттарға да қолданылады.
A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs. Web frameworks provide a standard way to build and deploy web applications on the World Wide Web. Web frameworks aim to automate the overhead associated with common activities performed in web development. For example, many web frameworks provide libraries for database access, templating frameworks, and session management, and they often promote code reuse. Although they often target development of dynamic web sites, they are also applicable to static websites.
Тарих
World Wide Web-тің дизайны өзінен-өзі динамикалық болмағандықтан, алғашқы гипертекст веб-серверлерде жарияланған HTML мәтіндік файлдардан тұратын. Басылған беттерге кез келген өзгерістерді беттердің авторы жасау керек еді. 1993 жылы веб-серверлермен сыртқы қолданбаларды интерфейстеу үшін, пайдаланушының кіріс жазбаларын көрсететін динамикалық веб-бетті ұсыну үшін Common Gateway Interface (CGI) стандарты енгізілді. Алайда, CGI интерфейсінің бастапқы іске асырылуы сервердің жүктемесіне кері әсер етті, өйткені әр сұрау жеке процесті бастады. Жақындағы іске асырулар сервер ресурстарының баспалдағын азайту және жалпы өнімділікті арттыру үшін басқа әдістердің арасында тұрақты процестерді пайдаланады. 1995 жылы толық интеграцияланған сервер/тілдерді дамыту орталары пайда болды және жаңа веб-тілдер енгізілді, мысалы ColdFusion, PHP және Active Server Pages. Динамикалық веб-беттерді құруға арналған тілдердің басым көпшілігі жалпы тапсырмаларға көмектесетін кітапханаларға ие болса да, веб-қосымшаларға көбінесе HTML (мысалы, Jakarta Faces) жасау сияқты белгілі бір тапсырмалар үшін арнайы кітапханалар қажет. 1990 жылдардың аяғында веб-жекешелер үшін пайдалы бірнеше кітапханаларды веб-жекешелер үшін қолдануға болатын бірыңғай бағдарламалық жасақтама жинағына жинаған "толық стек" фреймворктері пайда бола бастады.
Фреймворк архитектураларының түрлері
Веб-фреймворктердің көпшілігі модель-көрініс-басқарушы (MVC) үлгісіне негізделген.
Модельді қарау контроллері (MVC)
Көптеген фреймворктер MVC архитектуралық үлгісін қолданады, олар деректер моделін бизнес ережелеріне ("басқарушы") және пайдаланушы интерфейсіне ("көрініс") бөледі. Бұл әдетте жақсы тәжірибе болып саналады, өйткені ол кодты модульдейді, кодты қайта пайдалануға мүмкіндік береді және бірнеше интерфейстерді қолдануға мүмкіндік береді. Веб-қосымшаларда бұл әр түрлі көріністерді көрсетуге мүмкіндік береді, мысалы, мобильді және үстел браузерлері үшін әр түрлі веб-беттерді ұсыну немесе машинамен оқылатын веб-қызметтер интерфейстерін ұсыну.
Қысымға негізделген және тартуға негізделген
MVC фреймворктерінің көпшілігі "әрекетке негізделген" деп аталатын түрткіге негізделген архитектураны ұстанады. Бұл фреймворктер қажетті өңдеуді жүзеге асыратын әрекеттерді қолданады, содан кейін нәтижелерді көрсету үшін деректерді көрініс қабатына "өтіреді". Бұған балама ретінде кейде "компоненттік" деп аталатын тартуға негізделген архитектураны қарастырамыз. Бұл фреймворктер көрініс қабатынан басталады, содан кейін қажет болған жағдайда бірнеше контроллерлерден нәтижелерді "шығарады". Бұл архитектурада бірнеше контроллерлер бір көрініске қатыса алады.
Үш деңгейлі ұйым
Үш деңгейлі ұйымда, қолданбалар үш физикалық деңгейге сәйкес құрылады: клиент, қолданба және деректер қоры. Деректер қоры әдетте RDBMS болып табылады. Қолданбада серверде жұмыс істейтін және HTTP арқылы клиентпен қарым-қатынаста болатын бизнес-логика бар. Веб-қосымшалар клиенті - бұл веб-браузер, ол қолданбалық қабаттан шығарылған HTML-ті орындайды. Бұл терминді MVC-мен шатастыруға болмайды, мұнда үш қабатты архитектурадан айырмашылығы, бизнес логикасын контроллерден, "орталық қабаттан" алыс ұстау жақсы тәжірибе болып саналады.
Негізгі өтінімдер
Фреймворктер бірыңғай бағдарламалау тіліне негізделген интернет-қосымшаларды құруды қолдау үшін құрылады, олар белгілі бір тілдің мүмкіндіктерін арттыратын Zend Framework және Ruby on Rails сияқты жалпы мақсаттағы құралдардан бастап, белгілі бір пайдаланушы қолданбасының айналасында жасалған ана тіліндегі бағдарламаланатын пакеттерге дейін, мысалы, мазмұнды басқару жүйелері (CMS), кейбір мобильді әзірлеу құралдары және кейбір портал құралдары.
Жалпы мақсаттағы веб-сайттар
Веб-фреймворктер браузерлердің архитектуралық ережелері мен HTTP сияқты протоколдар бойынша жұмыс істеуі керек, ол мемлекетсіз. Веб-беттерді сервер көрсетеді, содан кейін оларды браузер JavaScript арқылы өзгерте алады. Бұл әдістің артықшылықтары мен кемшіліктері бар. Сервер жағындағы беттің өзгеруі әдетте беттің жаңартылуын талап етеді, бірақ кез-келген тілді пайдалануға және көбірек есептеу қуатын пайдалануға мүмкіндік береді. Клиент жағындағы өзгерістер бетті шағын бөліктермен жаңартуға мүмкіндік береді, бұл үстел қолданбасына ұқсайды, бірақ JavaScript-пен шектеледі және пайдаланушының браузерінде жүреді, ол шектеулі есептеу қуатына ие болуы мүмкін. Әдетте екеуінің аралас түрі қолданылады. JavaScript-ті көп пайдаланатын және парақтардың тек бір бөлігін жаңартатын қосымшалар бір парақты қосымшалар деп аталады және әдетте кодты ұйымдастыру үшін клиенттік JavaScript веб-жобасын пайдаланады.
Клиенттік тарап
Мысалға, "Бейне сүйекті" алайық. js, AngularJS, Angular, Ember. - Бұл - JS, Angular. js, ReactJS, jQuery UI, Svelte және Vue. js.
Ерекшеліктері
Фреймворктер әдетте бағдарламаның басқару ағынын белгілейді және фреймворктің пайдаланушысына әр түрлі оқиғаларды ашу арқылы осы ағынымен "қосуға" мүмкіндік береді. Бұл "бақылауды кері айналдыру" дизайн үлгісі фреймворктің айқындаушы қағидаты болып саналады және команда үшін ортақ ағынды қолдану арқылы кодқа пайда әкеледі, оны әркім ұқсас жолдармен бейімдей алады.
Кэштеу
Веб кэші - бұл желіні пайдалануды, сервер жүктемесін және "кедергі" сезімін азайту үшін веб-құжаттарды кэштеу. Веб-кеш арқылы өтетін құжаттардың көшірмелері сақталады; Кейінгі сұраулар белгілі бір шарттар орындалған жағдайда кэштен қанағаттандырылуы мүмкін. Кейбір қолданбалық фреймворктер құжаттарды кэштеу және беттің дайындалуының әртүрлі кезеңдерін айналып өту, мысалы, деректер қорына қол жеткізу немесе үлгіні түсіндіру механизмдерін ұсынады.
Қауіпсіздік
Кейбір веб-фреймворктер аутентификация және авторизациялау фреймворктерімен бірге келеді, олар веб-серверге қосымшаның пайдаланушыларын анықтауға мүмкіндік береді және кейбір анықталған критерийлерге негізделген функцияларға қол жеткізуді шектейді. Drupal - бұл парақтарға рөлге негізделген қол жеткізуді қамтамасыз ететін және пайдаланушыларды құру және оларға рөлдер тағайындау үшін веб-интерфейсті қамтамасыз ететін бір мысал.
Деректер қорына қол жеткізу, карталау және конфигурациялау
Көптеген веб-фреймворктер деректер қорының бэкендінде біріктірілген API жасайды, бұл веб-қосымшаларға кодты өзгертпей, әр түрлі деректер қорында жұмыс істеуге мүмкіндік береді және бағдарламашыларға жоғары деңгейдегі тұжырымдамалармен жұмыс істеуге мүмкіндік береді. Сонымен қатар, кейбір объектке бағдарланған фреймворктерде объектіні реляциялық карталауды қамтамасыз ететін карталау құралдары бар, ол нысандарды топтамаларға карталайды. Кейбір фреймворктер веб-қосымшаның конфигурациясын интроспекция және/немесе белгілі конвенцияларды қолдану арқылы барынша азайтады. Мысалы, көптеген Java фреймворктері Hibernate-ті тұрақтылық қабаты ретінде қолданады, ол қажетті ақпаратты тұрақтылықпен сақтай алатын орындалу кезінде деректер қорының схемасын шығарады. Бұл қолданба дизайнеріне деректер базасының схемасын нақты анықтамастан бизнес объектілерін жобалауға мүмкіндік береді. Ruby on Rails сияқты фреймворктер кері бағытта жұмыс істей алады, яғни, деректер қорының схемасына негізделген, орындау кезінде модель объектілерінің қасиеттерін анықтайды. және деректер қорын көшіру құралдары. JavaScript-те Ajax бағдарламалаудың күрделілігіне байланысты Ajax-ті қолдаумен ғана айналысатын көптеген Ajax фреймворктері бар. Кейбір Ajax фреймворктері тіпті үлкен фреймворктердің бір бөлігі ретінде кіріктіріледі. Мысалы, Ruby on Rails бағдарламасына jQuery JavaScript кітапханасы қосылған. "Web 2.0" бай веб-қосымшаларын әзірлеуге деген қызығушылықтың артуымен Ajax және JavaScript-те тікелей бағдарламалаудың күрделілігі айқын болды, сондықтан компилятор технологиясы кіріп, әзірлеушілерге Java, Python және Ruby сияқты жоғары деңгейдегі тілдерде код жазуға мүмкіндік берді. Бұл компиляторлардың алғашқысы Morfik болды, содан кейін Google Web Toolkit, кейінірек Pyjs және RubyJS түрінде Python және Ruby порттары пайда болды. Бұл компиляторлар мен оларға байланысты виджет жиынтық кітапханалары бай медиалы Ajax бағдарламаларын әзірлеуді үстел бағдарламаларын әзірлеуге әлдеқайда ұқсас етеді.
Веб-қызметтер
Кейбір фреймворктер веб-қызметтерді құру және ұсыну үшін құралдар ұсынады. Бұл утилиталар веб-қосымшаның қалған бөлігіне ұқсас құралдарды ұсына алады.
Веб-ресурстар
Жаңа Web 2.0 RESTful фреймворктерінің қатары ресурстарды сипаттау фреймворкінің (RDF) тұжырымдамаларына негізделген Семантикалық Веб онтологиясының бір түрінде ресурстар жинақтарын құру үшін ресурсқа бағдарланған архитектура (ROA) инфрақұрылымын ұсынады.