2ИССЛЕДОВАТЕЛЬСКАЯ ЧАСТЬ
2.1Обоснование выбора темы проекта
В современном мире количество информации огромно. Человеческий мозг не справляется и не может помнить все. Когда друзья или знакомые советует вам посмотреть какой-нибудь фильм, а ты уже не можешь вспомнить смотрел ты его или нет, про что он. Было бы полезно иметь быстрый доступ к информации о просмотре данного фильма, кратком описании, трейлере. Также когда друзья советуют вам посмотреть какой-либо фильм, как часто вы его вспоминали дома? Опять же было бы полезно иметь под рукой способ, для быстрого сохранения данной информации. Так как в современном мире доступ в интернет существует практически всегда и везде, всегда под рукой имеется гаджет, имеющий доступ в интернет, то было бы замечательно иметь такой сервис, позволяющий хранить информацию о фильмах для просмотра, фильмах, которые уже просмотрены. Именно такой сервис и был выбран в качестве дипломного проекта.
2.2Сравнение с существующими решениями
В данный момент существуют 2-3 подобных решений, но они либо имеют неудобный и не совсем понятный интерфейс, либо не имеют мобильного клиента. Есть один сервис с удобным интерфейсом и мобильными клиентами под все ныне существующие платформы, но он только для сериалов.
2.3Обоснование выбора способа решения
2.3.1Обоснование выбора архитектуры системы
В основу разрабатываемого программного комплекса положена клиент-серверная архитектура (client-server architecture). Такая архитектура характеризуется наличием двух взаимодействующих самостоятельных процессов – клиента и сервера, которые, в общем случае, могут выполняться на разных компьютерах, обмениваясь данными по сети.
Под клиентом понимается программа, использующая ресурсы, а под сервером – программа, обслуживающая запросы клиентов на получение ресурсов определенного вида.
Понятие архитектуры клиент-сервер связано с делением любой прикладной программы на три основных компонента или слоя. Этими тремя компонентами являются:
компонент представления (визуализации) данных;
компонент прикладной логики;
компонент управления базой данных.
Критерием, позволяющим отнести прикладную программу к клиент-серверной архитектуре является то, что хотя бы один из трех ее компонентов полностью выполняется на другом компьютере, и взаимодействие между компонентами на разных компьютерах осуществляется через ту или иную сетевую среду посредством передачи запросов на получение того или иного ресурса.
Поскольку архитектура клиент-сервер является частным случаем технологии клиент-сервер, в ней обязательно есть клиент и сервер. Соответственно, выделяют клиентскую и серверную стороны приложения. Клиентская сторона приложения функционирует на рабочем месте пользователя, в роли которого в подавляющем числе случаев выступает персональный компьютер. Серверная сторона функционирует на специализированном комплексе, включающем в себя мощные аппаратные средства, требуемый набор стандартного программного обеспечения, систему управления базами данных и собственно структуры данных.
Взаимодействие клиентской и серверной частей приложения осуществляется через сеть - локальную или глобальную. При этом с точки зрения клиента и сервера взаимодействие осуществляется прозрачно, соответственно сетевой компонент здесь включает в себя совокупность необходимого сетевого оборудования, набор программных технологий, обеспечивающих передачу данных между узлами сети, а также собственно протокол или протоколы для обмена запросами и результатами их выполнения.
Компонент визуализации прикладной задачи осуществляет ввод информации пользователем с помощью тех или иных средств, а также вывод информации на экран. Компонент визуализации для клиент-серверной архитектуры всегда исполняется на рабочем месте пользователя.
Компонент прикладной логики решает собственно ту или иную задачу, связанную с обработкой данных в той или иной предметной области. Этот компонент может быть распределен между клиентской и серверной частью различным образом в зависимости от применяемой модели.
Компонент хранения базы данных осуществляет физические операции, связанные с хранением данных, чтением информации из базы данных и записью в нее. В архитектуре клиент-сервер этот компонент всегда выполняется на сервере.
Сети на базе серверов имеют лучшие характеристики и повышенную надежность и безопасность. Сервер владеет главными ресурсами сети, к которым обращаются остальные рабочие станции.
В современной клиент–серверной архитектуре выделяется четыре группы объектов: клиенты, серверы, данные и сетевые службы. Клиенты располагаются в системах на рабочих местах пользователей. Данные в основном хранятся в серверах. Сетевые службы являются совместно используемыми серверами и данными. Кроме того службы управляют процедурами обработки данных.
Сети клиент–серверной архитектуры имеют следующие преимущества:
позволяют организовывать сети с большим количеством рабочих станций;
обеспечивают централизованное управление учетными записями пользователей, безопасностью и доступом, что упрощает сетевое администрирование;
эффективный доступ к сетевым ресурсам;
пользователю нужен один пароль для входа в сеть и для получения доступа ко всем ресурсам, на которые распространяются права пользователя.
Наряду с преимуществами сети клиент–серверной архитектуры имеются и некоторые недостатки:
неполадки сервера могут сделать сеть неработоспособной, что повлечет за собой как минимум потерю сетевых ресурсов;
требуются квалифицированный персонал для администрирования;
дополнительные денежные затраты на сеть и сетевое оборудование.
Для реализации системы можно выделить два подхода разработки распределенного клиент-серверного приложения.
Трехзвенное приложение с «толстым» клиентом;
Web-ориентированное приложение.
Из недостатков первого подхода ключевыми являются: необходимость разработки отдельного приложения (приложений, т.к. планируются несколько АРМов) под все платформы (Windows, Android и/или iOS), сложность поддержки.
Напротив, web-сервис освобожден от таких недостатков, т.к. для доступа к функционалу и контенту приложения используется веб-браузер, который присутствует на любой современной платформе. Среди недостатков, можно выделить: необходимость верстки страниц под разное разрешение экранов.
Таким образом, принято решение использовать клиент-серверную архитектуру для разработки системы.
2.3.2Обоснование выбора СУБД
Перед выбором СУБД для дипломного проекта были определены следующие требования:
наличие бесплатной версии системы (freeware) или версии под лицензиями «GNU/GPL»;
поддержка транзакций при высокой производительности;
доступность документации и информации о СУБД в Интернете;
наличие дистрибутива под ОС «Windows XP» и под UNIX-подобную систему;
возможность доступа к данным через интерфейс DBI.
Исходя из требований, выбор СУБД для использования в рамках данного проекта велся среди различного программного обеспечения. Были рассмотрены следующие СУБД:
Все системы являются достойными и надежными СУБД. Взглянем на них немного поближе:
MySQL это популярная бесплатная СУБД уровня малого бизнеса. К ее достоинствам можно отнести простоту и высокую производительность. Система поддерживает несколько типов таблиц и до последних версий системы ни один вид таблиц не поддерживал транзакций, за счет чего достигается высокая производительность. Новые же типы таблиц, с поддержкой транзакций, отличаются низкой производительность. Эта система в основном используется в Интернет проектах, где цена потери данных при одновременном доступе невысока.
PostgreSQL, как и MySQL, является бесплатной и доступна в исходных кодах. Это система уровня малого и среднего бизнеса. Судя по описанию в Интернете, система имеет множество положительных черт, однако есть очевидная проблема – отсутствие качественной документации. Разработчик периодически размещает на своем сайте новые версии системы и любой желающий может изучить систему по скудным комментариям в исходных кодах.
В таблице 2.1 подведен итог характеристик рассматриваемых СУБД и их соответствие указанным критериям. Степень соответствия каждому критерию указана оценкой в пятибалльной шкале.
Таблица 2.1 «Характеристики СУБД»
Критерий
|
СУБД
|
MySQL
|
PostgreSQL
|
Поддержка транзакций и высокая производительность
|
4
|
4
|
Наличие кэша
|
5
|
5
|
Наличие документации и справочной информации
|
5
|
2
|
Дистрибутив под ОС «Windows»
|
5
|
4
|
Дистрибутив под UNIX-подобную систему
|
5
|
5
|
После простого подсчета баллов, верх одержала СУБД «MySQL» с 24 из 25 возможных баллов. «PostgreSQL» набрала 20 баллов. Таким образом, для дипломного проекта будет использована СУБД «MySQL».
Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.
Основными преимуществами СУБД MySQL следует считать:
MySQL обладает развитыми возможностями масштабирования и администрирования.
MySQL поддерживает API к целому ряду языков программирования (включая Perl, C, PHP и т. д.).
MySQL может использоваться в среде многих различных систем UNIX, а также в среде Microsoft Windows.
многопоточность, поддержка нескольких одновременных запросов;
оптимизация связей с присоединением многих данных за один проход;
записи фиксированной и переменной длины;
ODBC драйвер;
гибкая система привилегий и паролей;
гибкая поддержка форматов чисел, строк переменной длины и меток времени;
быстрая работа, масштабируемость;
совместимость с ANSI SQL;
бесплатна в большинстве случаев;
хорошая поддержка со стороны провайдеров услуг хостинга;
быстрая поддержка транзакций через механизм InnoDB.
2.3.3Обоснование выбора WEB-сервера Apache
Перед выбором Web-сервера для дипломного проекта были определены следующие требования:
наличие бесплатной версии системы (freeware) или версии под лицензиями «GNU/GPL»;
распространенность;
надежность;
гибкость;
доступность документации и информации в Интернете;
Исходя из требований, выбор сервера для использования в рамках данного проекта велся среди различного программного обеспечения. Были рассмотрены следующие WEB-сервера:
«Apache HTTP Server»;
«nginx»;
«Microsoft IIS 7.0»
Рассмотрим каждый из этих серверов немного подробнее.
Apache HTTP-сервер. С апреля 1996 это самый популярный HTTP-сервер в Интернете; в августе 2007 года он работал на 51% всех веб-серверов, а в мае 2010 года – на 48%. По данным Netcraft (www.netcraft.com) на январь 2011 года, более 160 млн. сайтов обслуживаются веб-сервером Apache, что составляет 59% от общего числа веб-сайтов. Основными достоинствами Apache считаются надёжность и гибкость конфигурации. Он позволяет подключать внешние модули для предоставления данных, использовать СУБД для аутентификации пользователей, модифицировать сообщения об ошибках и т. д. Поддерживает IPv6.
nginx – это очень быстрый HTTP сервер, который часто используют вместо или совместно с Apache, чтобы снизить нагрузку на сервер и увеличить скорость обработки запросов посетителей. Модульная архитектура дает Apache огромные возможности, которые, однако, большинство из нас никогда не будет использовать. Ценой за эту функциональность является большой расход системных ресурсов. Обычный сайт, как правило, содержит больше статичных файлов (изображения, файлы стилей и JavaScript), чем скриптов. Для того чтобы передать эти файлы посетителю, не требуется никакой специальный функционал, задача предельно проста. Следовательно, и обрабатывать такие запросы нужно простым, легковесным веб-сервером, таким, как nginx.
Internet Information Service – Информационные службы Интернета (IIS) вместе с операционной системой Microsoft® Windows Server 2008™ обеспечивают комплексные, надежные, масштабируемые, безопасные и регулируемые возможности веб-сервера при работе с внутренними и внешними сетями, а также с Интернетом. IIS является инструментом для создания мощных коммуникационных платформ динамических сетевых приложений. Различные организации используют IIS для поддержки и управления веб-страниц в Интернете или во внутренней сети, для поддержки и управления FTP-узлами, для маршрутизации новостей и почты, которые используют протоколы NNTP и SMTP. IIS 6.0 поддерживает последние веб-стандарты, такие как Microsoft ASP.NET, XML и протокол SOAP, для разработки, реализации и управления веб-приложениями. IIS 6.0 включает новые возможности, созданные в помощь организациям, техническим специалистам и веб-администраторам для достижения желаемой производительности, надежности, масштабируемости и безопасности тысяч веб-узлов на одном или нескольких серверах IIS.
В таблице 2.2 подведен итог характеристик рассматриваемых Web-серверов и их соответствие указанным критериям. Степень соответствия каждому критерию указанна оценкой в пятибалльной шкале.
Таблица 2.2 «Характеристики WEB-серверов»
Критерий
|
Сервер
|
Apache
|
ngnix
|
IIS
|
распространенность
|
5
|
4
|
3
|
надежность
|
5
|
5
|
5
|
гибкость
|
5
|
5
|
5
|
наличие документации и справочной информации
|
5
|
5
|
5
|
Стоимость
|
бесплатная
|
бесплатная
|
бесплатная
|
По данным сайта www.netcraft.com (определение и сбор статистики по используемым в мире веб-серверам) WEB-сервер «Apache» занимает лидирующие позиции.
Таким образом, в качестве WEB-сервера был выбран сервер «Apache».
Преимущества Web-сервера Apache:
Бесплатность.
Многопоточность в UNIX.
Новая система сборки.
Поддержка различных протоколов.
Улучшенная поддержка отличных от UNIX платформ.
Новый API для Apache.
Поддержка протокола IPv6.
Использование фильтров.
Сообщения об ошибках на разных языках.
Упрощенная конфигурация.
Поддержка юникода Windows NT.
Новая библиотека для работы с регулярными выражениями.
Безопастность.
|