Нет фреймворк для чего нужен: Для чего нужен Microsoft .NET Framework?
Содержание
Как установить Net Framework на Windows XP
Операционной системе Windows для запуска многих специализированных программ, не входящих в базовый набор, нужно дополнительно ПО. Например, ни одна компьютерная игра не запустится, если не установлен DirectX. Также работает и такая программная платформа, как Net Framework. Она нужна для работы программ, написанных на разных популярных языках: C++, Microsoft NET и пр. Без соответствующего пакета невозможно запустить многие программы и приложения – вы получите соответствующее уведомление. Поэтому нужно разобраться, как установить Net Framework на Windows XP.
Нюансы версий Net Framework
Речь об операционной системе XP идет по тому, что она по-прежнему актуальна. Да, она уже давно не поддерживается компанией Microsoft и многие современные сервисы не работают с ней. Но все же сегодня не составит труда найти компании, особенно государственные, где используется данная ОС. Более того, многие узкоспециализированные программы разработаны специально под нее. Поэтому в ряде случаев есть необходимость купить Windows XP. И, разумеется, установить пакет Net Framework.
Что касается данной версии операционной системы, то она поддерживает версии платформы до 4.0.3. То есть если программа требует Net Framework 4.5, то установить ее на Windows XP вы не сможете – вам нужна более современная операционная система.
Особенности установки
Все версии Net Framework работают отдельно. То есть если у вас стоит версия 4.0, а для программы нужна 3.5, то нужно ее поставить отдельно. Иначе программное обеспечение не будет работать. К тому же более старшие пакеты не включают в себя предыдущие, не считая промежуточных. Например, в Net Framework 3.5 входит 2.0 и 3.0. Вследствие этого возникают сложности. В частности, на вопрос «Как обновить Net Framework на Windows XP?» ответ будет такой: нужно устанавливать нужные версии отдельно, в том числе и более новые.
А как определить, какая платформа установлена у вас уже? Для этого можно установить программу ASoft . NET Version Detector. После ее запуска вы сможете определить, какие пакеты у вас уже установлены. Цветовой индикацией будут подсвечены те версии, которые есть. А те, которых нет, вы можете загрузить и установить, нажав соответствующую кнопку в меню. Разумеется, если ваша версия операционной системы не подходит, то вы получите соответствующее оповещение. Также нужную версию Framework вы можете бесплатно скачать с официального сайта Microsoft.
Тут стоит учесть, что, как правило, скачивается веб-установщик. Это маленький файл, который автоматически докачивает недостающие файлы. Это удобнее и практичнее. Но если ваш компьютер не подключен к интернету, то такой вариант не подходит. Вам нужен оффлайн установщик, который содержит полный набор файлов нужной версии Net Framework. Его вы можете найти на сайте Майкрософт или на сторонних специализированных порталах.
Как удалить Net Framework
Иногда в ходе работы компьютера могут возникать конфликтные ситуации между версиями данной платформы. Например, вы установили сперва более новую, а затем старую. Чтобы решить проблему, необходимо удалить конкретную версию пакета и установить повторно. Для деинсталляции подойдет программа .NET Framework Cleanup Tool, которая полностью удаляет все файлы и записи реестра. После деинсталляции перезапустите компьютер и можете устанавливать пакет с нуля. В большинстве случаев это решает все актуальные проблемы.
Если же они сохранились, то это может быть из-за того, что вы используете Windows XP, а вам нужна операционная система с поддержкой более новых пакетов. В этом случае выход один – установка более новой ОС.
Как установить framework 3.5 на Windows 10
«Десятка» поставляется с предустановленной .NET Framework 4.5, но для многих приложений, разработанных еще во времена Vista и Windows 7, нужен .NET Framework v3.5. Эти приложения не будут работать, пока вы не установите необходимую версию. После попытки запустить любую такую программу, Windows 10 предложит вам загрузить и установить . NET Framework 3.5.
Как установить .Net Framework 3.5 на Windows 10
Чтобы успешно установить .Net Framework 3.5 на Windows 10, выполните следующие простые действия:
Откройте панель управления.
Переключитесь в режим просмотра «Мелкие значки».
Найдите и откройте «Программы и компоненты».
Нажмите «Включение или отключение компонентов Windows».
Выберите .NET Framework 3.5 (включая 2.0 и 3.0) и нажмите кнопку «ОК», чтобы загрузить и установить .net Framework 3.5 на компьютер с Windows.
После этого начнётся загрузка .NET Framework 3.5 на ваш компьютер.
Включить .NET Framework при помощи DISM
Есть еще один способ включить .Net Framework, это воспользоваться DISM. Смонтируйте образ диска Windows 10 или вставьте DVD-диск, либо вставьте загрузочную флешку с операционной системой, в зависимости от того, что у вас есть.
Откройте «Этот компьютер» в проводнике и запишите букву диска установочного носителя, который вы вставили.
Теперь откройте командную строку с повышенными правами администратора и введите следующую команду:
Dism /online /enable-feature /featurename:NetFX3 /All /Source:D:sourcessxs /LimitAccess
Замените D: на букву диска для установочного носителя Windows 10.
Готово! Это установит .NET Framework 3.5 в Windows 10. Чтобы сэкономить ваше время, для экономии времени и установки необходимого компонента можете воспользоваться уже готовым решением.
@echo off
Title .NET Framework 3.5 Offline Installer
for %%I in (D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist «%%I:sourcesinstall.wim» set setupdrv=%%I
if defined setupdrv (
echo Found drive %setupdrv%
echo Installing .NET Framework 3.5…
Dism /online /enable-feature /featurename:NetFX3 /All /Source:%setupdrv%:sourcessxs /LimitAccess
echo.
echo .NET Framework 3.5 should be installed
echo.
) else (
echo No installation media found!
echo Insert DVD or USB flash drive and run this file once again.
echo.
)
Pause
Автономный установщик .NET Framework 3.5 для Windows 10
Автономный установщик .NET Framework – небольшая утилита, доступная бесплатно, разработанная TechGainer для автоматической установки .NET Framework 3.5 на Windows 10. Хотя .NET Framework 4 является частью Windows 8 и 10, версия 3.5 или более ранние версии не включены в эти выпуски Windows. Чтобы установить их, вам нужно подключение к интернету. Вы можете установить его, воспользовавшись интернетом.
Выбор лучшего внешнего интерфейса
Примечание редактора. Эта статья была обновлена нашей редакционной группой 23 января 2023 года. Он был изменен, чтобы включить последние источники и привести его в соответствие с нашими текущими редакционными стандартами.
Мир JavaScript — это богатая среда с десятками инструментов, библиотек и фреймворков. Но с большим количеством вариантов возникает много путаницы. Ситуация на самом деле является обоюдоострым мечом. Хотя у вас может быть огромное пространство для творчества и экспериментов, вы часто можете не знать, какой интерфейсный фреймворк лучше выбрать. И выбор правильного фреймворка для внешнего интерфейса может в долгосрочной перспективе решить ваш проект или разрушить его.
В этой статье мы рассмотрим некоторые из самых популярных интерфейсных JavaScript-фреймворков и их сравнение друг с другом. Мы рассмотрим пять различных аспектов этих фреймворков, чтобы упростить процесс принятия решения о вашем следующем фреймворке JavaScript.
Независимо от того, выбираете ли вы одну из этих популярных интерфейсных сред JavaScript или что-то более экзотическое, вы должны учитывать каждый из этих аспектов.
Ключ № 1 к интерфейсным JS-фреймворкам: доступность учебных ресурсов
Это очевидно, но часто упускается из виду. Хотя причудливая домашняя страница и документация некоторых фреймворков могут привлечь ваше внимание, вам все равно потребуются дополнительные курсы, книги, учебные пособия и статьи, чтобы начать работу.
Создание надежной структуры — это одно, а передача основных идей, лежащих в ее основе, — совсем другое. На самом деле, есть много профессиональных разработчиков, которые специализируются на коучинге. Хорошо продуманный учебный ресурс значительно сократит вашу кривую обучения. Ищите ресурсы от заслуживающих доверия авторов, с которыми у вас уже есть опыт работы — в конце концов, это будет стоить вашего времени. Если вы изо всех сил пытаетесь найти что-то полезное, будьте осторожны: фреймворк, который вы пытаетесь изучить, может быть новым или еще не принятым сообществом.
Хотя я упомянул, что одной документации недостаточно, есть и исключения. Ember.js, например, имеет отличную документацию. Основные функции и варианты использования хорошо описаны с общими примерами здесь и там. К сожалению, кроме документации, у нас мало что осталось.
С другой стороны, ресурсов для Angular и React предостаточно. Почти на любом фронтенд-ориентированном образовательном веб-сайте будет несколько статей о них, если не полноценный видеокурс или книга.
Vue находится посередине: у него хорошая документация и есть несколько полезных курсов, которые вы можете выбрать. У Аурелии почти нет ресурсов; ваша единственная надежда — это документация и удача.
Даже если вы прочитаете подходящую книгу или пройдете полезный курс, вы узнаете что-то новое, познакомившись с различными ресурсами. Если вы знакомы с предметом, просмотрите и найдите темы, которые еще не совсем ясны.
К сожалению, эта стратегия не сработает, если вы ограничены в своих возможностях, что приводит нас к следующему пункту.
Ключ № 2 к интерфейсным JS-фреймворкам: популярность
Вы можете гордиться изучением чего-то экзотического, но если посмотреть на это с точки зрения бизнеса, это не всегда полезно. Ваша компания или клиент, вероятно, предпочитает использовать проверенный в бою набор инструментов, и на это есть несколько причин. Если фреймворк не так популярен, значит, мало разработчиков, которые на нем специализируются. Что произойдет, если вы откажетесь от проекта или найдете новую работу? В конечном итоге ваш работодатель ищет разработчика, который знает нишевую структуру, которую вы использовали.
Эта ситуация может стать настоящим бременем для компании. То же самое верно, даже если вы придерживаетесь проекта, и он растет. Теперь работодателю нужны более специализированные разработчики для ускорения разработки.
Есть и другие причины, по которым вы можете выбрать популярный, широко используемый фреймворк. Что произойдет, если вы обнаружите, что столкнулись с проблемой, а нет сообщества, к которому вы могли бы обратиться за помощью? Поскольку вы сами работаете с документацией, скорее всего, вы потратите много времени.
Кроме того, вы хотите подумать о будущих, более привлекательных возможностях в вашей карьере. Если вы специализируетесь на чем-то популярном и хорошо в этом разбираетесь, для вас найдется множество проектов.
Очевидными лидерами по популярности являются Angular, React и Vue. Большинство списков вакансий, связанных с интерфейсом, требуют того или иного. Они поддерживаются Google и Facebook соответственно, поэтому работодатели чувствуют себя в безопасности, выбирая их.
Иногда выбор фреймворка для вашей компании или клиента не зависит от вас; возможно, это сделал предыдущий сотрудник или кто-то из команды. Скорее всего, это будет Angular или React. Теперь есть и другие варианты, такие как Ember.js и Vue, но вы должны сознательно искать компании, использующие их.
Вы можете приблизительно определить популярность фреймворка, посмотрев, насколько хорошо проект продвигается на GitHub и в других местах. Вот некоторые статистические данные:
Angular | React | Ember.js | Vue | |
---|---|---|---|---|
Звезды на GitHub | 85 743 | 200 064 | 22 367 | 201 616 |
289 994 | 438 892 | 23 944 | 100 867 |
действительно новая, похожая статистика по ним может помочь вам сделать выбор.
Изучая только Angular или React, вы далеко не продвинетесь в своей карьере. Конечно, у вас будет много возможностей, но есть причина, по которой существуют и другие фреймворки. Постарайтесь узнать о них в свободное время и время от времени проводите некоторые эксперименты. Даже если вы никогда не будете использовать их в реальных проектах, вы получите ценную информацию, которая поможет вам в повседневной работе по разработке.
Ключ № 3 для интерфейсных JS-фреймворков: основные функции
Вы хотите сделать краткий обзор основных функций фреймворка, чтобы получить адекватные ожидания, прежде чем приступить к программированию. Просмотрите документацию. Вам нужно будет получить общее представление о том, о чем этот фреймворк. Это только слой просмотра, полноценный или что-то среднее?
Если у вас есть богатый опыт работы с другими платформами, этот процесс будет простым и быстрым. Найдите в документации следующие разделы: создание шаблонов, управление состоянием, HTTP-связь, обработка и проверка форм и маршрутизация. Это повседневные вещи, которые вы делаете как разработчик. Не все из них могут быть представлены в основной структуре, или может быть какой-то другой подход к конкретной проблеме.
Кратко коснемся популярных опций.
Начнем с React и Vue. На самом деле это не фреймворки; они представляют только уровень представления вашего приложения. Это означает, что все остальные части — HTTP-связь, обработка и проверка форм и т. д. — зависят от вас.
Как я уже упоминал ранее, ситуация может быть палкой о двух концах. В конце концов, вы создадите свой собственный фреймворк.
И React, и Vue имеют свою экосистему библиотек для решения наиболее распространенных проблем, но общая структура будет варьироваться от проекта к проекту. JSX React всегда заставлял меня съеживаться — мне пришлось к нему привыкнуть. Тем не менее, шаблоны Vue действительно хороши, особенно если вы работаете с Angular.
С другой стороны, в Ember.js есть почти все. Удивительно, но ядро Ember.js не обеспечивает расширенную обработку форм; у него есть помощники ввода и все. Он очень самоуверен и даже имеет свой собственный уровень данных. Если у вас есть опыт работы с другими фреймворками или JavaScript в целом, вы можете разочароваться, потому что Ember.js использует собственную объектную модель. Стандартные классы ES6 широко не используются, как указано в документации. Вы можете обнаружить, что присваиваете значение непосредственно свойству, а Ember.js жалуется на это. Все должно быть сделано «в стиле Ember.js».
Ember Data — еще одно существенное отличие Ember.js от других фреймворков. Это слой данных для приложений Ember.js. Вы можете думать об этом как о каком-то ORM для внешнего интерфейса. Вы создаете модели и сопоставляете отношения между ними.
Если на вашем сервере используется JSON API (спецификация для реализации JSON API), Ember.js вам подходит, но, к сожалению, большинство серверов его не используют. Поэтому вам нужно написать собственные адаптеры и сериализаторы. Однако, если вы делаете что-то в стиле Ember.js, это может быть действительно продуктивно, несмотря на крутую кривую обучения.
Angular — это многофункциональная среда. Он поставляется с множеством модулей, таких как Ember.js, поэтому в вашем распоряжении масса инструментов из коробки. Однако, поскольку Angular предназначен для больших приложений, он продвигает TypeScript, что может вызвать некоторое сопротивление еще до того, как вы попробуете его использовать.
Другим примечательным аспектом является интенсивное использование наблюдаемых объектов из библиотеки Rx — приятная функция. Вы можете представить почти что угодно в виде наблюдаемого и применять высокоуровневые операции, такие как карта, фильтр и т. д. Если вы использовали Lodash или Underscore, Rx — это как перегруженный двоюродный брат.
Вот краткое изложение основных функций четырех фреймворков, обсуждаемых в этой статье:
Angular | React | Ember.js | Vue 90 049 | |
---|---|---|---|---|
Просмотр/шаблон | ✔ | ✔ | ✔ | ✔ |
Маршрутизатор | ✔ | ✔ | ✔ | ✔ |
Обработка форм | ✔ | ✔ | ||
Проверка формы | ✔ | HTTP-связь | ✔ | ✔ |
Однако все функции, которые мы обсуждали, бесполезны. если вам нужно работать сверхурочно, чтобы использовать их эффективно — следующий пункт.
Ключ № 4 к интерфейсным JS-фреймворкам: удобство использования
Если на данный момент у вас все еще есть энтузиазм по поводу выбранного вами фреймворка, следующим шагом будет запачкать руки.
Возможно, фреймворк подходит вам из-за вашего опыта. Может быть, это немного отличается и в некотором роде бросает вам вызов. Вы еще не знаете, и никакие чтения или просмотры руководств не помогут, пока вы сами не попробуете.
Лучший способ познакомиться с фреймворком — использовать его в каком-нибудь мини-проекте. Это дает вам возможность решать повседневные проблемы с заданным фреймворком.
Работая над проектом, не торопитесь и подумайте, продуктивны ли вы. Насколько легко добиться желаемого результата? Вам нужно искать внешние библиотеки? Возможно, вам нужны какие-то плагины от сообщества. Существует ли какая-либо общепринятая структура или руководящие принципы в контексте структуры? Может быть, есть CLI для ускорения процесса разработки. На этом этапе вы собираете базовую информацию, чтобы представить себе, что было бы, если бы вы использовали эту структуру для будущих проектов или даже перенесли существующие.
Ember.js считается очень продуктивным фреймворком, по крайней мере, для основных пользователей. Он поставляется с интерфейсом командной строки, который действительно помогает. Вы можете создавать маршруты, контроллеры, компоненты и модели с их собственными наборами тестов (делать все это вручную — утомительная задача). Также возможно создание нового проекта. Он создаст базовую структуру папок, установит необходимые пакеты, создаст инструменты, протестирует среду и т. д. Если вы никогда не использовали CLI в такой степени, вы будете очень довольны. Но, как я упоминал ранее, Ember.js очень самоуверен; несмотря на всю его полезность, вы можете разочароваться, пытаясь выполнить обычные задачи.
У React и Vue есть CLI, create-react-app и vue-cli. Но помимо создания исходного проекта с некоторыми опциями, они не предлагают так много по сравнению с Ember. js или Angular. Это понятно, так как они оба представляют слой представления. Если вам нравятся настраиваемые рабочие процессы, эксперименты или различные структуры для каждого проекта, то вам подойдут React и Vue. Для некоторых разработчиков ключом является гибкость, и она неотъемлема при использовании React или Vue.
Angular поставляется с интерфейсом командной строки, как и Ember.js. Вы можете генерировать компоненты, директивы, службы и т. д. Он также генерирует начальную структуру для приложения, поэтому вам нужно беспокоиться только о продукте. Среда тестирования действительно организована, поскольку с каждым сгенерированным фрагментом приложения рядом с ним (в буквальном смысле) находится набор тестов. Кроме того, TypeScript может обеспечить реальный прирост производительности. Вот почему:
Сколько раз вы встречали код с такими строками…
function doSomething(someData) { // сделай что-нибудь }
… и задавались вопросом, что такое someData
, какими свойствами он должен обладать, какие функции он должен обеспечивать и каково их поведение? С TypeScript вы определяете тип и ожидаете соответствующие данные. Вы можете пойти дальше, если используете какую-нибудь IDE с поддержкой TypeScript. Легко исследовать различные части приложения.
Мы не коснулись IDE, но для большинства лучших интерфейсных фреймворков есть несколько плагинов, которые действительно упрощают разработку. WebStorm, например, поставляется со встроенной поддержкой Angular, React и Vue.
Ключ № 5 к интерфейсным JS-фреймворкам: простота интеграции с другими библиотеками
Простота интеграции может считаться частью удобства использования, но она настолько важна, что заслуживает отдельного раздела.
Независимо от того, насколько многофункциональна выбранная вами платформа, скорее всего, вы столкнетесь с проблемами, которые потребуют дополнительных инструментов. Существуют отличные библиотеки, которые сосредоточены на одной задаче (манипулирование DOM, обработка данных, форматирование времени, редактирование форматированного текста и т. д.), но если вы попытаетесь интегрировать одну из них и каждый раз будете тратить на это часы, это может оказаться не оптимальным. выбор.
Проверить это очень просто. Вы можете быстро придумать воображаемый сценарий, в котором вам нужна определенная библиотека. Посмотрите на свои прошлые проекты: какие инструменты вы использовали и в каких сценариях? Скорее всего, вы снова столкнетесь с той же ситуацией, и вы хотите быть готовы к этому или, по крайней мере, иметь ожидания.
С Vue и React вы несете ответственность почти за все, и использование других библиотек не является исключением. Если вы используете Webpack или аналогичный инструмент сборки, вы можете напрямую ссылаться на библиотеки, установленные с помощью NPM. (Я обнаружил, что использование плагинов сообщества с Vue доставляет некоторые хлопоты, особенно когда они также содержат логику пользовательского интерфейса.)
У Ember.js есть EmberObserver, веб-сайт плагинов сообщества. Каждый из них имеет оценку по шкале от 0 до 10. Это действительно продуктивное место для поиска того, что вам нужно. Если вы введете название ваших любимых библиотек, таких как Lodash, RxJS или Ramda, вы найдете соответствующие плагины от простых оберток до полной перезаписи. Конечно, есть Awesome React и Awesome Vue, репозитории, в которых собраны связанные ресурсы, включая библиотеки, но EmberObserver оказался особенно полезным.
Использование внешнего интерфейса JavaScript Framework
Выбор правильного JavaScript-фреймворка — один из самых важных шагов на пути к успеху вашего веб-проекта. Независимо от того, работаете ли вы над небольшим или большим проектом, работаете в одиночку или в команде, каждый из этих пяти ключевых моментов играет решающую роль в определении наилучшего внешнего интерфейса для вашего проекта.
Что касается основных функций и удобства использования, я перечислил пункты, которые в разной степени повлияют на продуктивность разработчиков. Удобство использования особенно сложно, потому что оно сильно зависит от вашего опыта и опыта, а также от вашей конкретной компании или организации и ее потребностей.
Со временем фреймворки, которые мы обсуждали в этой статье, могут развиваться, их популярность может измениться, и проекты, для которых они подходят, могут измениться, но эта статья должна дать вам общее представление о том, где и когда каждый из этих фреймворков может быть использован. работать лучше всех.
Родственный:
- Спровоцируют ли JS Frameworks революцию во внешнем интерфейсе?, где мы обсуждаем другие варианты, такие как Svelte и Preact, и включаем живые демонстрации каждого фреймворка
- Изучение ClojureScript для фронтенд-разработки
.
Понимание основ
Какой фреймворк лучше для интерфейсов?
Какой фреймворк лучше для интерфейса, зависит от проекта. Когда дело доходит до интерфейсных фреймворков, не существует универсального решения, подходящего для всех.
Как выбрать внешний интерфейс?
При выборе внешнего интерфейса, т. е. фреймворка, используемого для его разработки, важны не только наборы функций фреймворка, но и другие факторы. Конкретный фреймворк может принести больше вреда, чем пользы, если у него нет надежных обучающих ресурсов, популярности, позволяющей нанимать квалифицированных специалистов, и простой интеграции.
Есть ли будущее у интерфейсов?
Да. Фронтенды имеют такое же будущее, как и бэкенды, поскольку, в широком смысле, для создания приложения необходимы и те, и другие.
Почему передние части важны?
Внешние интерфейсы важны, потому что они являются частью приложения или сайта, с которыми пользователи взаимодействуют напрямую. Плохо развитый или недостаточно поддерживаемый интерфейс может привести к быстрой потере пользователей.
К сожалению у нас нет фреймворка
История фреймворков PHP начинается в середине нулевых, а точнее в 2005 году. Хотя PHP существует с 1995 года, только в версии 4 появилась рудиментарная поддержка того, что можно было бы назвать — при большом желании — объектно-ориентированным. Однако это не помешало некоторым смельчакам сделать свои первые объектно-ориентированные шаги. Они опубликовали библиотеки и классы, которые в основном просто объединяли определенные функции: родился PEAR, PHP Extension and Application Repository. И даже если эти решения имеют мало общего с тем, что мы могли бы сегодня понимать под фреймворком, модульную концепцию PEAR можно найти и в современных фреймворках.
Следующее поколение фреймворков PHP требовало версии 5 языка, которая была выпущена в 2004 году с серьезной поддержкой объектно-ориентированной разработки, бумом доткомов и, что не менее важно, Дэвидом Хайнемайером Ханссоном. Стоит ли сегодня с точки зрения PHP гордиться тем, что способствовал буму доткомов, вероятно, вопрос, который можно превосходно обсудить или даже поспорить. Что, однако, бесспорно, так это то, что Дэвид Хайнемайер Ханссон со своим фреймворком Ruby on Rails оказал большое влияние, особенно на мир PHP, и, вероятно, все еще оказывает его сегодня.
Сначала сообщество PHP с завистью смотрело на ранние истории успеха о том, насколько продуктивным может быть программирование с помощью такой среды, как Ruby on Rails. По общему признанию, сравнение между языком программирования и фреймворком не имеет большого смысла, но кто в сегодняшнем (медийном) мире все еще спрашивает о пользе сравнений?
Стандартный пример приложений Ruby on Rails, создание блога менее чем за 10 минут, впечатляет, но он вводит в заблуждение относительно сложности реального приложения с серьезной бизнес-логикой. И это до того, как мы перейдем к проблемному использованию Active Record и сильной связи кода с базой данных, стоящей за ним.
Вероятно, из-за страха, что PHP — не в последнюю очередь из-за фреймворка Rails — может уступить долю рынка Ruby, а также из-за того, что в то время почти не было доступных серьезных фреймворков PHP, компания Zend анонсировала свой собственный продукт с открытым исходным кодом: Zend. Рамки.
Однако до первого релиза 30 июня 2007 года прошло около двух лет. Это время, когда другие команды разработчиков также работали над своими фреймворками для PHP, и некоторые из них добились довольно значительного распространения. Среди наиболее известных фреймворков первыми, вероятно, были CakePHP, Agavi и Symfony 1 в 2005 г., за ними последовали CodeIgniter в 2006 г. и его ответвление Kohana в 2007 г.
Разумеется, разрабатывались не только универсальные фреймворки, но и более-менее готовые решения для систем управления контентом, интерактивных порталов или создания интернет-магазинов. Помимо Typo 3 и Drupal, особенно Magento стала одной из самых популярных (и часто ненавидимых) платформ для электронной коммерции. Забавный факт: изначально Zend рекламировала его как демонстрацию мощи собственного фреймворка, Magento 1 использовала очень мало частей раннего предварительного релиза фреймворка, и даже тогда основные концепции были искажены почти до неузнаваемости.
Какой из фреймворков лучше?
Растущее разнообразие фреймворков и концепций быстро привело к вопросу о том, какой фреймворк лучше. Конечно, этот вопрос кажется очевидным, если (больше) нельзя спрашивать, какой язык программирования является лучшим. Дискуссии, которые следуют за попытками ответить на этот вопрос, конечно, в высшей степени религиозны. В конце концов, вряд ли в какой-либо теме разработчики могут столько спорить, разве что об отступах и о том, где ставить фигурные скобки.
Поэтому в конце 2000-х различные организаторы конференций сочли, что публичное обсуждение фреймворка может быть интересным. Если пользователи отдельных фреймворков уже склонны биться головой о том, чей фреймворк лучше, что произойдет, если основные разработчики разных фреймворков соберутся в панельной дискуссии? Мы помним конференцию, на которой организатор в качестве меры предосторожности разместил заряженный нерф-пистолет на каждом сиденье.
То, что произошло потом, должно быть, стало горьким разочарованием для организаторов: представители разных фреймворков, которые и так знали друг друга, выражали друг другу большое уважение, кое-где расхваливали техническое преимущество «конкурса» и рассказывали, где они были вдохновлены друг другом. «Война фреймворков», высказанная в названии мероприятия, никогда не существовала в таком виде. Сообщество PHP, даже если это не всегда так кажется со стороны, всегда было тесно переплетено.
Если вам не нужно стремиться к доле рынка, чтобы еще больше увеличить собственные продажи и продолжать публиковать новые истории успеха в бизнесе, вы можете вдохновляться идеями, концепциями и решениями других, точно так же, как это делал и продолжает делать PHP как язык. . Именно это «обучение друг у друга» ускоряет инновации. В мире с открытым исходным кодом это даже лучше и даже быстрее, потому что вы можете легко просматривать исходный код других без технических и юридических препятствий и — в зависимости от лицензии — даже напрямую использовать его или интегрировать его как компонент в свой собственный. решение.
Фабьен Потенсье, основатель Sensio Labs и отец Symfony, оказал выдающиеся услуги сообществу PHP, как никто другой. Он всегда знал, как выйти за рамки PHP и учиться на других языках и их платформах. Таким образом, он поделился с PHP-сообществом новыми идеями и множеством лучших практик. Все эти годы Symfony была движущей силой инноваций в мире PHP и повлияла на многие другие решения и фреймворки. Конечно, вы не обязаны соглашаться со всеми решениями, концепциями и вытекающими из них решениями, но многие инновации — по крайней мере, в мире PHP-фреймворков — сегодня трудно представить без них.
Например, последовательное использование внедрения зависимостей (DI), которое должно быть само собой разумеющимся в объектно-ориентированном программировании, не всегда было очевидным выбором при разработке PHP. На треке Unconference в кулуарах ZendCon в Санта-Кларе, где проходила сессия по внедрению зависимостей, Фабьен, Стефан и один из основных разработчиков Zend Framework, Ральф Шиндлер, собрались вместе и обсудили плюсы и минусы DI. Сначала Ральф не был убежден, почему и как вообще следует использовать внедрение зависимостей. Очевидно, аргументы Фабьена и Стефана были убедительны, потому что в следующем выпуске Zend Framework появился новый компонент — контейнер внедрения зависимостей (DIC), написанный Ральфом Шиндлером.
Интересно, что, несмотря на свое название, Zend Framework изначально позиционировался как свободный набор компонентов, которые можно было использовать вместе и которые следовали относительно единой схеме разработки. Это очень отличается от многих других фреймворков, которые имели фиксированную, довольно монолитную структуру, следуя принципу «все или ничего», и поэтому также называются фреймворками с полным стеком.
Инверсия управления
Что приводит нас к захватывающему вопросу: что такое фреймворк? Если вы спросите в Интернете, вы получите, как это часто бывает, бесчисленное множество объяснений, некоторые из которых даже противоречат друг другу. С академической точки зрения, структура — это просто инверсия контроля. На практике это означает, что приложение не управляет потоком управления само по себе, а оставляет это на усмотрение фреймворка. Таким образом, повторяющиеся процессы могут быть закодированы в общем виде, так что разработчик приложения может сосредоточиться на написании самого приложения, компоненты которого затем вызываются структурой.
Неудивительно, что большинство фреймворков в мире PHP занимаются абстрагированием HTTP-запросов и хотят максимально упростить для разработчика создание приложения и его интеграцию с Интернетом.
Многие платформы утверждают, что полагаются на шаблон проектирования MVC. Тот факт, что паттерн Модель-Представление-Контроллер, который Трюгве Реенскауг изобрел в 1979 году для настольных приложений на языке Smalltalk, концептуально не может функционировать в сети и вне границ клиент-сервер, был и остается просто проигнорированным. Следствием этого является то, что никто не может точно ответить, какой код на самом деле относится к модели, а какой к контроллеру, даже авторы соответствующих фреймворков. Только когда дело доходит до точки зрения, большинство людей более или менее согласны.
Но независимо от того, какую платформу HTTP вы выберете, поток управления для ответа на HTTP-запрос всегда один и тот же: в зависимости от того, какой запрос присутствует, вы должны решить, какой код выполнять — процесс, называемый маршрутизацией. Для отображения результата обычно используется HTML и, таким образом, только что упомянутое представление. Ошибки «конвертируются» в соответствующие коды ошибок HTTP или, в случае обработки формы, подготавливаются в удобной для пользователя форме.
Кстати, форма или обработка данных также является типичным вариантом использования для фреймворка реверсирования потока управления. Вместо реализации потока управления разработчик приложения определяет только саму форму, определяет, какими значениями она должна быть предварительно заполнена, а затем определяет правила проверки с соответствующими сообщениями об ошибках. После этого все, что остается сделать, — это определить, какие действия должны быть выполнены в случае успеха, а какие — в случае ошибки. Затем управление передается контейнеру-инверсии-управления, в простейшем случае самописному абстрактному базовому классу.
Даже предположительно современная структура CQRS не сильно отличается, за исключением того, что делается различие между командой и запросом, которые маршрутизируются отдельно. Кроме того, команды обычно не возвращают содержимое, в то время как запросы, очевидно, служат для доставки содержимого. Тот факт, что этот контент в идеале уже статически генерируется вне запроса и, таким образом, доступен в форме, которая оптимально соответствует запросу, не сильно меняет фактический поток обработки.
Становится интересно, когда требования меняются, и это приводит к тому, что базовые допущения, особенно фреймворка, перестают применяться: Что произойдет, если вместо HTML ответом будет JSON или одна и та же бизнес-транзакция должна обрабатываться независимо и без запуск HTTP-запроса? Как это выглядит, когда вместо полноценной HTML-страницы нужны небольшие фрагменты в разных форматах? Классические решения с полным стеком, такие как Magento или Typo3, по-прежнему страдают от того, что их архитектура на самом деле не предназначена для таких случаев использования.
У тех, кто не разрабатывал бизнес-логику собственного приложения чисто изолированным образом, а тесно связан с фреймворком, тоже возникает проблема. Решение часто представляет собой такой инструмент, как wget, который можно использовать для запуска HTTP-запроса из командной строки. Или иногда используются сложные дополнительные технологии для вырезания, парсинга или преобразования доставленной страницы.
Пока не сломается
Интересно, что осознание того, что используемая до сих пор структура больше не может удовлетворить все требования, редко приводит к тому, что сначала извлекается реальная бизнес-логика. Похоже, правило состоит в том, что кто-то пытается все больше и больше изгибать текущее решение, тем самым теряя шанс на обновление или напрямую повторяя те же ошибки при переходе на другой фреймворк.
Большинство поставщиков фреймворков усвоили урок: хотя пути миграции с Zend Framework 1 на версию 2 практически не существовало, современные фреймворки стремятся поддерживать обратную совместимость с более ранними версиями, насколько это возможно.
Нам всегда интересно испытать в нашей повседневной консультационной работе, что разработчики буквально извиняются перед нами за то, что не использовали фреймворк. Помимо того, что это не соответствует действительности в большинстве случаев согласно приведенному выше определению фреймворка, просвечивает совершенно ненужное обесценивание собственного труда. Вам не должно быть стыдно, если вы разработали свою собственную структуру, адаптированную к вашим собственным требованиям, и вам не должно быть стыдно за использование стандартной среды.
Фреймворк не обязательно должен быть и, возможно, даже не должен быть реализован как решение с полным стеком, а должен эффективно решать ровно одну задачу. За прошедшие с тех пор десять лет наметилась четкая тенденция перехода от фреймворков с полным стеком к так называемым микрофреймворкам, таким как Slim. Это было спровоцировано осознанием того, что тяжеловесный фреймворк, который предназначен для загрузки большого количества данных, чтобы динамически собрать из него сложную HTML-страницу, не обязательно подходит для ответов на AJAX-запросы от фронтенда с высокой производительностью.