Выбор программного обеспечения Отправной точкой выбора ПО является архитектура ИС. Для сравнения были выбраны трёхзвенная архитектура (Three-tier, или Multitier architecture) и концепция MVC («Model – view – controller»), предполагающая разделение данных приложения, пользовательского интерфейса и управляющей логики на три отдельных компонента: модель, представление и контроллер [36].
Трехзвенная архитектура является примером многоуровневой архитектуры, включающей клиентское приложение (браузер), сервер приложений и сервер базы данных [37]. Подбор архитектур основан на общем свойстве изолированности (независимости) компонентов, что впоследствии обеспечивает возможность повторного использования и более высокую скорость разработки, за счёт возможности параллельной работы.
Хотя трехзвенная архитектура и концепция MVC имеют достаточно много общего, их основным различием является топология. Если в трехзвенной архитектуре топология является линейной, то концепция MVC использует треугольную топологию. Уровень представления в трехзвенной архитектуре не может взаимодействовать с уровнем данных, минуя уровень бизнеслогики, тогда как каждый из компонентов MVC может обратиться к другому. Преимущества треугольной топологии проявляются, например, в возможности внесения изменений в пользовательский интерфейс, не затрагивая бизнес-логику.
Следовательно, одним из критериев подбора фреймворков для сравнения является поддержка концепции MVC. Сравнение будет произведено по следующим критериям (см. табл. 2.17. Сравнение фреймворков для разработки):
стоимость (приобретения, внедрения, владения);
язык программирования;
функциональность (наличие ключевых функций для обеспечения задач ИС);
техническая документация и примеры;
поддерживаемые СУБД;
сложность установки и настройки;
платформа;
успешные проекты.
По итогам сравнения лучшие результаты показали фреймворк Ruby on Rails и Django. Малое количество примеров и справочников и высокая сложность установки и настройки привели к отказу от фреймворка Symfony [38]. Стоимость и необходимость работы исключительно с платными продуктами компании «Microsoft» исключили фреймворк ASP.NET MVC [39].
Фреймворки Django и Ruby on Rails основаны на общем принципе повторного использования, позволяющего снизить дублирование кода в приложении (принцип «Don’t repeat yourself») [40]. Хотя Django имеет обширную встроенную функциональность, большое количество плагинов сторонних разработчиков, подключаемых к Ruby on Rails, позволяет снизить затраты на разработку требуемых функций [41]. Кроме того, оба фреймворка имеют большое количество руководств и примеров, снижающих сложность обучения. Рисунок B.26.Сравнение фреймворков для разработки
Критерий
| Symfony 2
| ASP.NET MVC
| Ruby on Rails
| Django
| Стоимость
| Бесплатный, лицензия MIT
| Платный
| Бесплатный, лицензия MIT
| Бесплатный, лицензия BSD
| Язык программирования
| PHP
| С#
| Ruby
| Python
| Функциональность
| Существует возможность подключения плагинов, встроенные функции аутентификации, кеширования, работы с Ajax
| Встроенные функции аутентификации, кеширования, работы с Ajax
| Большая экосистема плагинов – подключаемых «джемов» (gem)
| Встроенный интерфейс администратора, система кеширования, авторизация и аутентификация; возможность подключения внешних модулей и пакетов
| Техническая документация и примеры
| Малое количество примеров
| Качественная документация и большое количество примеров
| Качественная документация и большое количество примеров
| Качественная документация и большое количество примеров
| Поддерживаемые СУБД
| PDO-совместимые
| Microsoft SQL Server
| MySQL, Firebird, PostgreSQL, DB2, Oracle, Microsoft SQL Server
| PostgreSQL, MySQL, SQLite, and Oracle
| Сложность установки и настройки
| Высокая
| Средняя
| Низкая (дистрибутивы Instant Rails или BitNami RubyStack включают в себя все необходимое для разработки в среде Rails, включая Ruby, RubyGems, Ruby on Rails, MySQL, Apache, Mongrel и Subversion
| Средняя
| Платформа
| Кроссплатформенный
| .NET
| Кроссплатформенный
| Кроссплатформенный
| Успешные проекты
| Drupal, Delicious, Dailymotion
| stackoverflow
| Basecamp, Twitter, Shopify, Github,
Lighthouse, Groupon
| Instagram, Disqus, Mozilla, The Washington Times, Pinterest
|
Основным отличием является язык программирования. Сравнение языков приведено в табл. 2.18. Сравнение языков Ruby и Python:
Рисунок B.27.Сравнение языков Ruby и Python
Критерий
| 1 место
| 2 место
| Простота изучения (Ease of learning)
| Ruby
| Python
| Читабельность (Readability)
| Python
| Ruby
| Удобство использования (Usability)
| Ruby (благодаря принципу наименьшего удивления)
| Python
| Безопасность (Security)
| Python, Ruby (оба содержат функции по предотвращению инъекций SQL, межсайтового скриптинга)
|
| Помимо предложенных критериев также были изучены особенности синтаксиса обоих языков. Благодаря легкости изучения и удобстве использования, а также на основе персональных предпочтений в вопросах синтаксиса, предпочтение было отдано языку Ruby. Кроме того, по мнению разработчиков, скорость разработки на языке Ruby гораздо выше [42]. Соответственно, фреймворком для разработки стал Ruby on Rails
Разработчики Ruby on Rails отдают предпочтение двум веб-серверам: Apache HTTP сервер и nginx (именно для них создан модуль Phusion Passenger) [41]. Однако наиболее популярным решением является использование связки серверов nginx и Unicorn. Поскольку и Apache и nginx обладают такими свойствами, как кроссплатформенность (поддерживают системы Linux, BSD, Mac OS, Microsoft Windows), надежность, гибкость конфигурации, бесплатное распространение, выбор был сделан исходя из их применения наиболее успешными проектами, как например, GiHub и Groupon.
В качестве сервера базы данных Ruby on Rails поддерживает MySQL, Firebird, PostgreSQL, Oracle и Microsoft SQL Server. Как было отмечено ранее, стоимость является одним из критериев выбора программного обеспечения. Так как Microsoft SQL Server и Oracle являются коммерческими продуктами, было принято решение отказаться от их использования. Из оставшихся СУБД MySQL является наиболее распространенным решением
Таким образом, фреймворком для разработки веб-приложения был выбран Ruby on Rails, основными преимуществами которого являются скорость разработки, благодаря обширному набору готовых к работе штатных инструментов и решений в сообществе, язык Ruby, простота программирования, гибкость и безопасность. Ruby on Rails является открытым программным обеспечением и распространяется под лицензией MIT. В качестве СУБД была выбрана MySQL; связка серверов nginx и Unicorn была определена как наиболее подходящий вебсервер.
|