Конструктор веб-приложений для кинотеатров

Сценарии использования веб-приложения кинотеатра, модель базы данных библиотеки. Шаблон проектирования MVC, методы для работы с базой данных. Описание технологий, средств разработки и развертывания. Созданию конструктора веб-приложений для кинотеатров.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 28.08.2020
Размер файла 1,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

ПРАВИТЕЛЬСТВО РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ

«ВЫСШАЯ ШКОЛА ЭКОНОМИКИ»

Факультет компьютерных наук

Департамент программной инженерии

Выпускная квалификационная работа

на тему Конструктор веб-приложений для кинотеатров

по направлению подготовки 09.03.04 «Программная инженерия»

Д.Ф. Фаисханов

Москва - 2020

Аннотация

Походы в кинотеатры - неотъемлемая часть досуга для многих людей. Зачастую походы на киносеансы, в частности, на самые ожидаемые фильмы, омрачаются тем, что билеты очень быстро раскупаются, или остаются самые неудобные для просмотра места в кинозале. Не все кинотеатры предоставляют онлайн-платформы для бронирования билеты, а если и имеется такая опция, такие сервисы могут работать медленно и быть сильно ограниченными в функционале.

Данная работа посвящена созданию и разработке конструктора веб-приложений для кинотеатров, которое позволит владельцам кинотеатров дать зрителям возможность выбрать сеанс, зал и место в онлайн-формате. Также веб-приложение предложит владельцам интегрировать в онлайн-сервис работников кинотеатра и назначить для них рабочие роли - это имеет особую актуальность в связи с меняющимися условиями ведения бизнеса и частичным переходом к цифровизации услуг.

В работе были проанализированы существующие аналоги: агрегаторы сайтов и конструкторы веб-приложений для различных сервисов. Были выявлены их достоинства и недостатки, которые помогли сформулировать основные требования к разрабатываемому конструктору веб-приложений.

Ключевые слова: кинотеатр, досуг, веб-приложение, конструктор сайтов. веб приложение проектирование библиотека

Going to the cinema is an inseparable part of leisure time for many people. However, experience of going to the cinema oftentimes can be marred by the fact that either are tickets selling out fast, or there are no more comfortable seats left. Not all cinema theatres offer online services for booking the tickets, and even if there is such an option, these services might often work slowly and have certain functional limitations.

The paper is devoted to creating and developing a web application constructor for the cinemas that would allow cinema owners to offer customers a choice in picking a movie, cinema hall, and a preferable seat - everything is online. Moreover, this web application will allow the owners of the cinema assign roles of the employees and incorporate them into the service. This has a special relevance due to changings in business management and a transition to digitization of services.

The work analyzes existing analogues: website builders and web application constructors for different services. Their advantages and disadvantages have been identified, and it helped to designate the main requirements for the developing of the web application constructor.

Keywords: cinema, leisure, web application, website builder

Основные определения, термины и сокращения

Веб-приложение -- клиент-серверное приложение, в котором взаимодействие между клиентом и веб-сервером происходит при помощи браузера [1].

Конструктор веб-приложений-это программа, которая используется для создания и редактирования веб-приложения.

Агрегатор -- сайт, который агрегирует (собирает) и классифицирует информацию и предложения разных компаний в одном месте[2].

BLOB- это binarylargeobject, то есть массив двоичных данных[3].

Оглавление

  • Введение
  • Глава 1. Анализ существующих решений
    • 1. Основные сценарии использования веб-приложения кинотеатра
    • 2. Существующие решения
    • 2.1 Wix
    • 2.2 uCoz
    • 2.3 Кинопоиск
    • Выводы о главе
  • Глава 2. Описание выбранных методов, моделей решения задач
  • 1. Структура системы
  • 2. Конструктор
  • 3. Веб-приложение кинотеатра
  • 4. Модель базы данных библиотеки
    • 4.1 Таблица AspNetUsers
    • 4.2 Таблица Companies
    • 4.3 Таблица CompanyMembers
    • 4.4 Таблица Cinemas
    • 4.5 Таблица Halls
    • 4.6 Таблица Films
    • 4.7 Таблица FilmSessions
    • 4.8 Таблица Tickets
    • 4.9 Таблица UserSessions
  • 5. Методы для работы с базой данных
  • Выводы о главе
  • Глава 3. Описание выбранных технологий, средств разработки и развертывания
  • 1. ASP.NET Core
    • 1.1 Описание технологии
    • 1.2 Шаблон проектирования MVC
    • 2. EntityFrameworkCore
    • 3. AzureBlobstorage
  • Выводы о главе
  • Заключение
  • Источники

Введение

В данной работе описан и структурирован процесс создания и разработки конструктора веб-приложений для кинотеатров.

Конструкторы веб-приложений занимают достаточно большой сегмент в интернете - они появились не так давно, но с тех пор ввиду универсального инструментария и доступности начали прогрессировать и предоставлять пользователям улучшенные возможности для кастомизации приложения в соответствии с необходимыми задачами.

Рост популярности конструкторов веб-приложений обусловлен переходом многих бизнес-компаний в digital-среду: бренду, чтобы соответствовать реалиям современности, идти в ногу со временем, необходимо иметь профильную страничку в интернете, онлайн-магазин и сопутствующие сервисы для упрощения взаимодействия с потребителем.

Изначально подобные конструкторы обладали лишь ограниченным функционалом, не предоставляя возможности для широкой настройки веб-приложения «под себя», были скорее типовыми и не предлагали широкий спектр пользовательских оформлений и решений, а порой и были чересчур сложны для массового пользователя и заказчика, потому что требовали умений и навыка программирования для решений определенных функциональных задач.

Также стоит отметить, что спрос рождает предложение, и здесь можно выявить четкие тенденции: все больше людей пользуются онлайн-сервисами, соответственно, все больше компаний стремятся угодить аудитории и предоставить свои услуги в сети Интернет. Кинотеатры также не остались в стороне и начали упрощать возможность покупки билетов в интернете с помощью разного рода интеграций (например, в сервис «Кинопоиск» [4]) или путем создания полноценных сайтов-профилей для своих развлекательных заведений, но чаще всего воплощение таких сайтов занимало много времени, и не всегда пользовательский интерфейс был «дружелюбным», в связи с чем подавляющее большинство людей, посещающих кинотеатры, оставалось приверженцами традиционного способа покупать билеты, непосредственно перед сеансом вживую.

На сегодняшний день на рынке существует большое количество конструкторов веб-приложений - как в России, так и за рубежом. Большая их часть квалифицирована для реализации и поддержания функционирования разного рода задач. Наличие у этих конструкторов изъянов и недостатков в виде широкого спектра задач, который порой «размывает» восприятие сервиса, подтолкнуло к созданию данного конструктора веб-приложения для кинотеатров.

Основной целью данной выпускной квалификационной работы является создание конструктора веб-приложений для кинотеатров. Для достижения этой цели были определены следующие этапы разработки:

1. Анализ рынка существующих решений, в том числе сайтов-агрегаторов, конструкторов веб-сайтов и платформ;

2. Выявление достоинств и недостатков продуктов, существующих на рынке;

3. Имплементация лучших сторон и наиболее привлекательных качеств конструкторов в план разработки проекта;

4. Разработка общей верхнеуровневой модели системы;

5. Разработка модели базы данных;

6. Разработка конструктора веб-приложений кинотеатра;

7. Разработка веб-приложения кинотеатра;

8. Разработка технической документации.

Первая глава данной работы включает в себя описание рынка конструкторов веб-приложений, ключевых игроков, занимающих значительные сегменты и доли на рынке разработчиков. Рассматриваются основные девелоперские решения, главные тенденции, присутствующие у всех конструкторов веб-приложений, определяются недостатки и сильные стороны существующих продуктов. На основе полученной информации формируются требования к разрабатываемому проекту.

Во второй главе подробно рассматриваются следующие аспекты: структура общей системы, архитектуры конструктора и веб-приложения кинотеатра, модель базы данных, а также методы доступа к таблицам базы данных.

В третьей главе описываются технологии, средства для разработки и развертывания приложения. Кроме того, описаны паттерны, которые использовались для разработки программы.

Глава 1. Анализ существующих решений

В данной главе будут рассмотрены результаты сравнительного анализа конструкторов веб-приложений, а также сервисы и веб-сайты, специализированные под функцию бронирования билетов на киносеансы. На сегодняшний день насчитывается бесчисленное множество конструкторов веб-сайтов и веб-приложений, спецификация функций которых варьируется и легко подстраивается под конкретные пользовательские задачи. Цель данной главы - определить, подходят ли стандартные (и самые известные) агрегаторы и конструкторысайтов и приложенийпод конкретную задачу создать веб-приложение для кинотеатра с удобным интерфейсом и доступным управлением.

1. Основные сценарии использования веб-приложения кинотеатра

Ниже представлены две диаграммы вариантов использования веб-приложения кинотеатра - со стороны пользователя и со стороны администратора и работников:

Рисунок 1. Диаграмма вариантов использования веб-приложения кинотеатра

Рисунок 2. Диаграмма вариантов использования конструктора веб-приложения кинотеатра

Чтобы удовлетворять потребностям пользователей, веб-приложению кинотеатра желательно покрывать тот минимальный набор функций, который описан выше.

2. Существующие решения

Несмотря на то, что задача, решаемая приложением (а именно упрощение владельцам кинотеатров создавать онлайн-сервисы по взаимодействию с клиентами) не нова, на рынке представлено много аналогов, которые в той или иной степени выполняют функцию создания онлайн-магазинов или сервисов по покупке-продаже тех или иных видов услуг. В данной главе будет совершена попытка проанализировать ключевые достоинства и недостатки разных из них.

2.1 Wix

Платформу Wix[5] можно назвать лидером в конструировании веб-сайтов, поскольку она оптимизирована под мобильные устройства, предоставляет пользователю удобный интерфейс, с помощью которого можно легко добавлять или убирать визуальные элементы своего сайта. Wix также универсален в том смысле, что нам нем можно сконструировать как визитку, так и блог, и интернет-магазин. Конструктор использует интеллектуальную систему Wix ADI [6], которая на основе запроса пользователя создает шаблон и макет сайта, специализированный под нужды компании или конкретного пользователя. Существуют также готовые шаблоны, из которых можно выбрать, а далее осуществить соответствующую кастомизацию. Если у пользователя есть навыки программирования, то он может использовать WixCode[7] для расширения функционала сайта и добавления собственных баз данных, с помощью которых можно проводить опросы, собирать необходимые пользовательские данные.

Однако после некоторых попыток поиска уже готового шаблона для создания сайта кинотеатра, выяснилось, что Wix не дает такой возможности: он специализирован на создании репрезентативных страниц и интернет-магазинов для более популярных массовых услуг, создание веб-приложения для кинотеатра там отсутствует.

2.2 uCoz

uCoz[8] - бесплатная система для создания сайтов, основанная отечественными разработчиками еще в 2005 году и пережившая свой «бум» в начале 2010-х гг. В uCoz, как и в Wix, и остальных конструкторах сайтов существуют платные и бесплатные шаблоны: бесплатных дизайнов на сайте ограниченное количество, всего 267 штук. Также существует возможность дополнять готовые страницы и работать напрямую с HTML-кодом. С помощью данного ресурса можно создавать полноценные сайты: у uCoz минималистичный интерфейс, удобная панель для администрирования сайта, возможность регистрировать пользователей, и настраивать их права доступа (что необходимо, к примеру, в работе с персоналом кинотеатра).

Как и в случае с Wix, у uCoz отсутствует шаблон для создания конкретно кинотеатра с возможностью выбора сеанса и покупки билетов - для этого необходимо создавать полноценную веб-страницу и подключать нужные API-модули самостоятельно.

2.3 Кинопоиск

Данный ресурс не связан с конструированием сайтов или веб-приложений, однако Кинопоиск как портал о киноиндустрии осуществляет не только функции онлайн-кинотеатра, который как стриминговый сервис позволяет брать фильмы в аренду за определенную плату, но еще и выступает в роли агрегатора сеансов для фильмов. При выборе фильма, который идет в прокате, на сайте отображается графа «доступные сеансы», нажав на которую, пользователь видит список киносеансов в кинотеатрах поблизости: можно выбрать время сеанса и место в зале, а затем забронировать билет. Кинопоиск предстает площадкой для размещения сеансов с разных кинотеатров - в этом смысле платформа позволяет посетителям выбирать наиболее удобное для них время и расположение кинотеатра, однако с точки зрения ведения бизнеса размещение сеансов на Кинопоиске наравне с другими кинотеатрами провоцирует конкуренцию между кинотеатрами и может рассеивать внимание потребителя, «размывать» бренд. К тому же система, присутствующая на данном ресурсе, не позволяет наделять персонал развлекательного заведения административными онлайн-ролями и, соответственно, осуществлять прямой контроль за продажей билетов и их валидацией перед началом сеанса.

Выводы о главе

Неотмеченными внимания остались некоторые порталы и интернет-ресурсы, являющиеся полноценными и репрезентативными для кинотеатра или сети: таким, например, является сайт сети «Киномакс»[9], распространенной по всей России. Подобного рода ресурсы позволяют клиентам как бронировать билеты, так и участвовать в разного рода накопительных акциях. Когда речь идет о крупной сети, у нее зачастую имеется готовое бизнес-решение в виде полноценного сайта, и она обходится без конструкторов и агрегаторов веб-приложений. Однако если говорить о малом и среднем бизнесе кинопроката, то на рынке конструкторов веб-сайтов и веб-приложений для них не существует готовых вариантов «под ключ».

Данная работа фокусируется на создании именно такого продукта для кинотеатров, который позволил бы: 1) посетителям - выбрать фильм и забронировать билет 2) администраторам - помимо предоставления базовых услуг, назначать роли для сотрудников кинотеатра.

Глава 2. Описание выбранных методов, моделей решения задач

В данной главе рассматриваются:структура общей системы, архитектуры конструктора и веб-приложения кинотеатра,модель базы данных, а также методы доступа к таблицам базы данных.

1. Структура системы

Данную программу можно разделить на две основные части:

1. Первая - конструктор, который представляет из себя веб-приложение и содержит функционал для создания, редактирования и администрирования веб-приложения для кинотеатра.

2. Вторая - само веб-приложение кинотеатра, которое предоставляет функционал для выбора фильма, ознакомления с информацией о фильме, выбора киносеанса и покупки билетов онлайн.

Для добавления, удаления, хранения и модификации данных используется реляционная база данных[10].Заполнение таблицы в основном происходит через конструктор (создание компании, кинотеатра, кинозала, фильма, киносеанса и т. д.). Веб приложение читает информацию из базы данных для отображения ее потенциальному посетителю кинотеатра. Единственный кейс, в котором веб-приложение кинотеатра добавляет информацию в базу данных -покупка билетов посетителем кинотеатра.

Помимо хранения информации о фильмах и кинотеатрах в базе данных, для корректной работы программы требуется добавление, удаление и хранение изображений. Простой пример - работа с постерами фильмов. Для этого используется хранилище файлов.

Ниже представлена схема работы программы. Стоит отметить две особенности:

1. Первая - между конструктором и веб приложением кинотеатра нет прямого взаимодействия. Обе части программы оперируют информацией, хранящейся в базе данных и хранилище объектов. Фактически, обе части не знают о существовании друг друга. Благодаря этому, например, в случае возникновения проблемы в работе конструктора, веб-приложение продолжит функционировать независимо от этой поломки. Это можно считать плюсом, ведь веб-приложение представляет из себя точку входа для потенциального посетителя кинотеатра.

2. Все взаимодействие с базой данных и хранилищем файлов реализовано в отдельной библиотеке, на которую ссылаются обе части приложение. Благодаря этому отсутствует дублирование кода.

Рисунок 3. Модель системы.

2. Конструктор

Данная часть программы, по сути, является панелью администратора и служит для выполнения таких задач, как:

1. Работа с кинотеатрами (создание, удаление, редактирование):

2. Работа с кинозалами (создание, удаление, редактирование);

3. Работа с фильмами (создание, удаление, редактирование);

4. Работа с киносеансами (создание, удаление, редактирование).

Архитектура конструктора может быть представлена в виде нескольких уровней или слоев:

1. Пользовательский интерфейс (Userinterface). Данный слой служит для пользователя точкой входа в конструктор и представляет из себя набор веб-страниц, через которые пользователь получает нужную ему информацию, а также формирует запросы для изменения информации, хранящейся в базе данных. Кроме того, пользовательский интерфейс отвечает за базовую валидацию запросов (попытка указания пустого названия кинотеатра, не валидногоemail и т. д.). После валидации запросы направляются в бизнес логику для дальнейшей работы.

2. Бизнес логика (Businesslogic). Данный слой служит для обработки запросов, приходящих из пользовательского интерфейса. Обработка включает в себя валидацию, всевозможные вычисления (например, расчет количества мест в новом кинозале) с последующей передачей обработанных данных в слой доступа к данным. Этот слой соединяет слой пользовательского интерфейса и слой доступа к данным.

3. Доступ к данным (Dataaccess). Это слой, который отвечает за связь и работу с базой данных и хранилищем файлов. Этот уровень получает запросы от уровня бизнес-логики и делает соответствующие запросы к базе данных.

3. Веб-приложение кинотеатра

Данная часть программы является e-commerceприложением, которое отображает всю нужную для покупателя информацию и дает возможность совершить покупку:

1. Список текущих фильмов;

2. Список предстоящих премьер;

3. Информация о конкретном фильме (жанр, описание, трейлер и т. д.)

4. Список доступных киносеансов для фильма;

5. Список доступных мест в кинозале;

6. Покупка билетов;

Архитектура веб-приложения кинотеатра состоит из такого же набора слоев, что и конструктор:

1. Пользовательский интерфейс (Userinterface) имеет свой набор веб-страниц, которые отвечают за предоставление информации клиенту кинотеатра, а также обрабатывают запросы от этого клиента (например, запрос на покупку билета).

2. Бизнес-логика (Businesslogic). См. слой бизнес-логики конструктора.

3. Доступ к данным (Dataaccess). См. слой доступа к данным конструктора.

4. Модель базы данных библиотеки

Все данные хранятся в реляционной базе данных. Ниже представлен рисунок со структурой базы данных, а также отдельные таблицы с описанием каждой сущности.

Рисунок 4.Структура БД.

4.1 Таблица AspNetUsers

В таблице хранятся аккаунты пользователей. Эта таблица генерируется встроенными в ASP.NETCore средствами.

Свойство

Описание

Id

Уникальный идентификатор аккаунта.

UserName

Никнейм пользователя

Email

Электронная почта пользователя

FirstName

Имя пользователя

LastName

Фамилия пользователя

PasswordHash

Хэш пароля

Таблица 1. Свойства таблицы AspNetUsers

4.2 Таблица Companies

В таблице хранится информация о зарегистрированных компаниях .

Свойство

Описание

Id

Уникальный идентификатор компании.

Name

Название компании

Phone

Номер телефона компании. Отображается в веб-приложении кинотеатра.

Email

Электронная почта компании. Отображается в веб-приложении кинотеатра.

InstagramLink

Ссылка на instagram компании. Отображается в веб-приложении кинотеатра.

FacebookLink

Ссылка наfacebook компании. Отображается в веб-приложении кинотеатра.

AccentColorFirst

Первый цвет выделения информации. Требуется для модификации дизайна веб-приложения

AccentColorSecond

Второй цвет выделения информации. Требуется для модификации дизайна веб-приложения

Таблица 2.Свойства таблицы Companies

4.3 Таблица CompanyMembers

В таблице хранится информация об участниках компаний.

Свойство

Описание

Id

Уникальный идентификатор участия

User

Роль пользователя в компании

UserId

Уникальный идентификаторпользователя

CompanyId

Уникальный идентификаторкомпании

Таблица 3. Свойства таблицы CompanyMembers

4.4 Таблица Cinemas

В таблице хранится информация о кинотеатрах компаний.

Свойство

Описание

Id

Уникальный идентификатор кинотеатра

Name

Название кинотеатра

Address

Адрес кинотеатра

Phone

Номер телефона кинотеатра

CompanyId

ID компании

Таблица 4. Свойства таблицы Cinemas

4.5 Таблица Halls

В таблице хранится информация о кинозалах кинотеатров.

Свойство

Описание

Id

Уникальный идентификатор кинозала

Name

Название кинозала

Rows

Количество рядов

Columns

Количество мест в ряду

Is3D

Флаг, хранящий информацию о том, поддерживает ли зал показ 3D-фильмов

IsImax

Флаг, хранящий информацию о том, поддерживает ли зал показ фильмов в формате IMAX

Seats

Количество мест в кинозале

HallTableJson

JSON, хранящий структуру кинозала

CinemaId

ID кинотеатра

Таблица 5. Свойства таблицы Halls

4.6 Таблица Films

В таблице хранится информация о фильмах.

Свойство

Описание

Id

Уникальный идентификатор фильма

Title

Название фильма

Description

Описание фильма

Duration

Длительность фильма

ReleaseDate

Дата выпуска фильма

Genre

Жанр фильма

TrailerUrl

Ссылка на трейлер

CompanyId

ID компании

IsActive

Флаг, показывающий, является ли фильм активным (идет ли в кинотеатрах)

Таблица 6. Свойства таблицы Films

4.7 Таблица FilmSessions

В таблице хранится информация окиносеансах.

Свойство

Описание

Id

Уникальный идентификатор киносеанса

FilmId

ID фильма

HallId

ID кинозала

StartTime

Начало киносеанса

EndTime

Окончание киносеанса

Price

Цена

Таблица 7. Свойства таблицы FilmSessions

4.8 Таблица Tickets

В таблице хранится информация о билетах.

Свойство

Описание

Id

Уникальный идентификатор билета

Email

Электронная почта покупателя

Phone

Номер телефона покупателя

Row

Ряд

Column

Место

FilmSessionId

ID киносеанса

Таблица 8. Свойства таблицы Tickets

4.9 Таблица UserSessions

В таблице хранится информация осессии пользователя.

Свойство

Описание

Id

Уникальный идентификатор сессии

CurrentCompanyId

Текущий ID компании

CurrentCinemaId

Текущий ID кинотеатра

CurrentFilmId

Текущий ID фильма

CurrentFilmSessionId

Текущий IDкиносессии

Таблица 9. Свойства таблицы FilmSessions

5. Методы для работы с базой данных

И конструктор, и веб-приложение кинотеатра взаимодействуют с базой данных и хранилищем файлов через общую библиотеку. Библиотека представляет из себя набор репозиториев, каждый из которых отвечает за свой тип данных. Репозиторий - это паттерн, который выступает посредником между слоем бизнес логики и слоем данных [11]. Ниже приведен список репозиториев и их методы.

CompanyRepository

Методы

Имя метода

Тип возвращаемого значения

Описание

FindByIdAsync

Company

Поиск компании по ее уникальному идентификатору

AddAsync

Company

Добавление новой компании

UpdateAsync

Company

Обновление компании

Таблица 10. Репозиторий CompanyRepository

CompanyMemberRepository

Методы

Имя метода

Тип возвращаемого значения

Описание

FindByIdAsync

CompanyMember

Поиск участия в компании по уникальному идентификатору

AddAsync

CompanyMember

Добавление нового участия

UpdateAsync

CompanyMember

Обновление участия

FindByUserId

CompanyMember

Поиск участия по IDпользователя

Таблица 11. Репозиторий CompanyMemberRepository

CinemaRepository

Методы

Имя метода

Тип возвращаемого значения

Описание

FindByIdAsync

Cinema

Поиск кинотеатра по уникальному идентификатору

AddAsync

Cinema

Добавление нового кинотеатра

UpdateAsync

Cinema

Обновление кинотеатра

FindByCompanyIdAsync

IEnumerable<Cinema>

Поиск кинотеатров по ID компании

Таблица 11. Репозиторий CinemaRepository

HallRepository

Методы

Имя метода

Тип возвращаемого значения

Описание

FindByIdAsync

Hall

Поиск кинозала по уникальному идентификатору

AddAsync

Hall

Добавление нового кинозала

UpdateAsync

Hall

Обновление кинозала

FindByCompanyIdAsync

IEnumerable<Hall>

Поиск кинозалов по IDкомпании

Таблица 12. Репозиторий HallRepository

FilmRepository

Методы

Имя метода

Тип возвращаемого значения

Описание

FindByIdAsync

Film

Поиск фильма по уникальному идентификатору

AddAsync

Film

Добавление нового фильма

UpdateAsync

Film

Обновление фильма

FindByCompanyIdAsync

Film

Поиск фильмов по ID компании

Таблица 13. Репозиторий FilmRepository

FilmSessionRepository

Методы

Имя метода

Тип возвращаемого значения

Описание

FindByIdAsync

FilmSession

Поиск киносеанса по уникальному идентификатору

AddAsync

FilmSession

Добавление нового киносеанса

UpdateAsync

FilmSession

Обновление киносеанса

FindByCompanyIdAsync

FilmSession

Поиск киносеансов по ID компании

FindByFilmIdAsync

FilmSession

Поиск киносеансов по ID фильма

Таблица 14. Репозиторий FilmSessionRepository

TicketRepository

Методы

Имя метода

Тип возвращаемого значения

Описание

FindByIdAsync

Ticket

Поиск билета по уникальному идентификатору

AddAsync

Ticket

Добавление нового билета

UpdateAsync

Ticket

Обновление билета

FindByFilmSessionIdAsync

Ticket

Поиск билетов по ID киносеанса

Таблица 15. Репозиторий TicketRepository

UserSessionRepository

Методы

Имя метода

Тип возвращаемого значения

Описание

FindByUserIdAsync

UserSession

Поиск пользовательской сессии по уникальному идентификатору пользователя

UpdateAsync

UserSession

Обновление пользовательской сессии

Таблица 16. Репозиторий UserSessionRepository

BlobRepository

Методы

Имя метода

Тип возвращаемого значения

Описание

Get

string

Получение ссылки на blob-объект по уникальному идентификатору

Upload

void

Загрузка объекта в blob-хранилище

Таблица 17. Репозиторий BlobRepository

Выводы о главе

Во второй главе были подробно рассмотрены такие аспекты программы, как структура общей системы, архитектуры конструктора и веб-приложения кинотеатра, схема базы данных, а также методы доступа к таблицам базы данных и хранилищу файлов.

Глава 3. Описание выбранных технологий, средств разработки и развертывания

В этой главе описаны технологии, средства для разработки и развертывания приложения. Также описаны паттерны, которые использовались для разработки, и формат ответов API.

1. ASP.NET Core

1.1 Описание технологии

И конструктор, и веб-приложение кинотеатра написаны на языкеC# с использованием технологии ASP.NETCore. ASP.NETCore - это кроссплатформенный фреймворк с открытым исходным кодом[12]. Его основное предназначение - разработка облачных интернет-приложений, веб-приложений, IoT-приложений и т. д. Благодаря возможности работы ASP.NETCoreприложений во всех основных десктопных операционных системах (Windows, Mac, Linux) повышается актуальность как этой технологии, так и языка C# [13]. Долгое время считалось, что приложения, написанные на этом языке программирования, предназначены только для Windows. Данный факт сильно ограничивал возможности разработчиков.

Рисунок 5.ASP.NETCore.

ASP.NETCoreприложения работают на основе .NETCore[14] -бесплатной кроссплатформенной среде с открытым исходным кодом. Эта технология увидела свет в 2016 году и с тех пор открыто развивается какусилиями компании Microsoft [15], так и силами сторонних разработчиков - официальный репозиторий .NETCoreоткрыт к pull-реквестам[16].

.NETCore можно назвать полностью переработанным наследником такой технологии, как .NETFramework [17] - программной платформы, предназначенной для разработки продуктов под операционные системы семейства MicrosoftWindows. Учитывая высокие темпы развития технологий и языков программирования, .NETFramework (первая версия которой вышла в далеком 2002 году) со временем начал сильно уступать своим аналогам в таких аспектах, как способы применения технологии, скорость работы, а также возможности поддержки и обновления. Основные улучшения .NET Framework:

1. Переход к модульности. NETCore - это модульная платформа, в которой каждый модуль (компонент) обновляется через NuGet(менеджер пакетов от компании Microsoft)[18]. .NETFrameworkже требует полного обновления

2. CoreCLR - среда выполнения программ. В отличие от среды CLR, которая находится в основе .NETFramework, CoreCLR поддерживает кроссплатформенность [19].

1.2 Шаблон проектированияMVC

Разработка программ в ASP.NETCoreоснована на структуре проектирования MVC-Model-View-Controller. Данная структура позволяет разделить приложение на три основные части [20]:

1. Группа моделей (models)- набор классов, которые хранят состояние приложение

2. Группа представлений (views) - отвечают за отображение данных пользователю.

3. Группа контроллеров (controllers) -контроллер является отправной точкой и отвечает за выбор нужных моделейи представлений. Кроме того, контроллер формирует модель.

Рисунок6. MVC.

Ниже приведен пример использования MVCв конструкторе, а именно - регистрация компании.

1. МодельPersonalAreaViewModel.cs:

public class PersonalAreaViewModel

{

[Required]

public string Name { get; set; }

...

}

Данная модель содержит одно обязательное поле - имя компании.

2. Представление PersonalArea.cshtml:

form asp-controller="PersonalArea" asp-action="Index" asp-route-returnurl="@ViewData["ReturnUrl"]" method="post" class="form-horizontal" autocomplete="no">

<div class="form-group" style="width: 95%">

<label asp-for="Name" lass="sr-only"></label>

<input asp-for="Name" class="form-control form-control-lg" placeholder="Company name">

<span asp-validation-for="Name" class="text-danger"></span>

</div>

<a onclick="parentNode.submit();" class="btnbtn-primary">Create</a>

</form>

Данное представление содержит форму для заполнения полей модели PersonalAreaViewModel.

3. Контроллер PersonalAreaController.cs

[Authorize]

public class PersonalAreaController : Controller

{

...

public async Task<IActionResult> Index()

{

var model = new PersonalAreaViewModel

{

Companies = await GetCompanies(CancellationToken.None)

};

return View(model);

}

[HttpPost]

public async Task<IActionResult> Index(PersonalAreaViewModel model, string returnUrl = null)

{

ViewData["ReturnUrl"] = returnUrl;

if (ModelState.IsValid)

{

await CreateCompany(model.Name);

model.Companies = await GetCompanies(CancellationToken.None);

// Clear input.

ModelState.Clear();

model.Name = "";

return View(model);

}

model.Companies = await GetCompanies(CancellationToken.None);

return View(model);

}

...

}

Привызове Get-метода контроллер возвращает список компаний пользователя. При вызове Post-метода контроллер валидирует модель, и в случае успешной валидации вызывает дальнейшую логику создания компании.

2. EntityFrameworkCore

Для работы с базой данных в данной программе была использована технология EntityFrameworkCore. Это объектно-ориентированный ORM-инструмент для доступа к данным. (ORM - аббревиатура, расшифровывающаяся как object-relationalmapping - отображения данных на реальные объекты)[21]. Плюс EFCore в том, что он предоставляет возможность работать с базами данных используя синтаксис языка C#, а именно LINQ-запросы. То есть при работе с базой данных через EntityFramework, LINQ-запросы конвертируются в SQL-аналоги. Таким образом, EFCore позволяет абстрагироваться от конкретной базы данных и работать с данными независимо от хранилища.К примеру, на стадии активной разработки можно использовать SQLite базу данных (т. к. она требует минимальных настроек), а в prod-версии использовать SQLServer. При этом единственное изменение, которое требуется от разработчика - установить нужный пакет для работы с конкретным типом базы данных.

Существует два основных подхода организовать работу с данными через EntityFrameworkCore:

1. CodeFirst. Подход, при котором база данных (таблицы, индексы, связи и т. д.) генерируются на основе C#-классов (C#-класс -> сущность в базе данных). Генерация происходит с помощью так называемых «миграций».

2. DatabaseFirst. Подход, при котором C#-классы для работы с базой данных генерируются на основе готовой базы данных.

Рисунок 7. Два подхода работы с EntityFrameworkCore

Так как при написании этой работы использовался CodeFirstподход, рассмотрим его более подробно.

Для организации CodeFirstподхода от разработчика требуется следующее:

1. Описать сущности в C#-классах

В качестве примера ниже приведен класс Company, который представляет из себя компанию:

public class Company

{

[Key]

public long Id { get; set; }

public string Name { get; set; }

public string Phone { get; set; }

public string Email { get; set; }

public string InstagramLink { get; set; }

public string FacebookLink { get; set; }

public string AccentColorFirst { get; set; }

public string AccentColorSecond { get; set; }

public List<Cinema> Cinemas { get; set; }

public List<Film> Films { get; set; }

}

2. Создать класс, который наследуется от DbContextи описать там список DbSet-ов, каждый из которых в последствии превратится в отдельную таблицу.

В качестве примера ниже приведен класс ApplicationDbContext:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>

{

public ApplicationDbContext()

{

}

public DbSet<UserAudit> UserAuditEvents { get; set; }

public DbSet<Company> Companies { get; set; }

...

}

3. Описать отношения между сущностями. Есть два варианта сделать это:

a. Атрибуты классов;

b. FluentAPI;

В данной работе используются атрибуты. В качестве примера можно изучить класс Companyиз 1 пункта - атрибут [Key] означает, что свойство Idявляется ключом для сущности Company.

4. Создать миграцию, чтобы база данных смогла инициализироваться автоматически;

В качестве примера ниже описана миграция, которая добавляет в сущность Companyполя ColorAccent:

public partial class AddedAccentColors : Migration

{

protected override void Up(MigrationBuildermigrationBuilder)

{

migrationBuilder.AddColumn<string>(

name: "AccentColorFirst",

table: "Companies",

nullable: true);

migrationBuilder.AddColumn<string>(

name: "AccentColorSecond",

table: "Companies",

nullable: true);

}

protected override void Down(MigrationBuildermigrationBuilder)

{

migrationBuilder.DropColumn(

name: "AccentColorFirst",

table: "Companies");

migrationBuilder.DropColumn(

name: "AccentColorSecond",

table: "Companies");

}

}

5. Написать запрос, используя LINQ.

В качестве примера ниже приведен запрос для получения списка фильмов по уникальному идентификатору компании:

public async Task<IEnumerable<Film>> FindByCompanyIdAsync(long companyId, CancellationToken token)

{

return await _context.Films

.Where(p => p.Company.Id == companyId)

.ToListAsync(token);

}

3. AzureBlobstorage

Контент веб-приложения кинотеатра состоит не только из набора текстовой информации о фильме (название, описание, жанр, дата выпуска и т. д.). Постеры к фильмам, например, являются важной частью описания фильма и поэтому в данном продукте должна была организована работа с изображениями, а именно их загрузка в хранилище и, конечно же, отображение на веб-странице.

Так как большинство технологий, которые использовались при разработке программы, связаны с компанией Microsoft, было принято решение использовать AzureBlobstorage [22], которое также является решением этой компании. Большой плюс данного выбора - наличие официальной библиотеки для работы с этим хранилищем.

BLOB- это аббревиатура, которая расшифровывается как “binarylargeobject”, или «двоичный большой объект». То есть это обычный массив двоичных данных, который нельзя структурировать по какому-либо правилу (в виде записи в таблице реляционной базы данных и т. д.).

Особенность Blob-хранилищ состоит в том, что они предназначены для хранения неструктурированной информации и хорошо подходят для:

1. Доставки изображений прямо в окно браузера;

2. Стриминга видео- и аудиопотоков;

3. Хранения различных бекапов;

4. и так далее.

Рисунок 8. Внешний вид панели администрированияAzureBlobStorage

Для работы с AzureBlobstorageдостаточно проделать следующие шаги:

1. Создать хранилище в AzurePortal и скопировать строку подключения;

2. Установить NuGet-пакет Microsoft.WindowsAzure.Storage;

3. Указать строку доступа в приложении.

Ниже приведены примеры загрузки изображения в хранилище, а также получение изображения из хранилища. ЭтореализовановвидерепозиторияBlobRepository:

public class BlobRepository

{

private readonly CloudBlobContainer _container;

private readonly string _signature;

public BlobRepository(IOptions<BlobRepositoryOptions> options)

{

var client = CloudStorageAccount.Parse(options.Value.ConnectionString).CreateCloudBlobClient();

_container = client.GetContainerReference("posters");

var readOnly = new SharedAccessBlobPolicy

{

SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24),

Permissions = SharedAccessBlobPermissions.Read

};

_signature = _container.GetSharedAccessSignature(readOnly);

}

public string Get(long id)

{

var blob = _container.GetBlockBlobReference(id.ToString());

return blob.Uri + _signature;

}

public async Task Upload(long id, IFormFile file)

{

var blob = _container.GetBlockBlobReference(id.ToString());

await blob.UploadFromStreamAsync(file.OpenReadStream());

}

}

Выводы о главе

В данной главе были описаны технологии и средства для разработки и развертывания приложения. Также были упомянуты паттерны, которые использовались для разработки программы и приведены соответствующие примеры.

Заключение

Быстрая и недорогая разработка и поддержка веб-приложений для кинотеатров является проблемой для владельцев в связи с узкоспециализированных решений. Ожидается, что разработанный конструктор послужит хорошим решением данной проблемы. Благодаря современным технологиям, используемым в проекте, обеспечивается высокая и стабильная производительность, а также возможность расширения и поддержки. Благодаря использованию средств Microsoft Azure можно относительно легко масштабировать работу программы.

В рамках данной выпускной квалификационной работы был создан конструкторвеб-приложений для кинотеатров, а именно были выполнены следующие этапы:

1. Проанализирован рынок существующих решений, в том числе сайтов-агрегаторов, конструкторов веб-сайтов и платформ;

2. Выявлены достоинства и недостатки продуктов, существующих на рынке;

3. Разработана общая верхнеуровневая модель системы;

4. Разработана модель базы данных;

5. Разработан конструктор веб-приложений для кинотеатров;

6. Разработано веб-приложение для кинотеатра;

7. Разработана техническая документация.

В качестве планов дальнейшей разработки можно подчеркнуть такие пункты, как:

1. Добавление новых способов кастомизации внешнего вида веб-приложения кинотеатра, чтобы увеличить индивидуальность создаваемых решений;

2. Интеграция с веб-сервисами, которые реализуют хранение информации о фильмах для упрощения заполнения контента веб-приложения кинотеатра;

3. Добавление возможности конструировать мобильные приложения;

Источники

1. Веб-приложение - Википедия[Электронный ресурс]

2. //URL: https://ru.wikipedia.org/wiki/Веб-приложение (Дата обращения: 01.05.2020, режим доступа: свободный).

3. Агрегатор- Википедия [Электронный ресурс]

4. //URL: https://ru.wikipedia.org/wiki/Агрегатор (Дата обращения: 01.05.2020, режим доступа: свободный).

5. Blob - MDNWebdocs[Электронный ресурс]

6. //URL: https://developer.mozilla.org/ru/docs/Web/API/Blob (Дата обращения: 01.05.2020, режим доступа: свободный).

7. Кинопоиск - Кинопоиск [Электронный ресурс]

8. //URL: https://www.kinopoisk.ru(Дата обращения: 01.05.2020, режим доступа: свободный).

9. Wix - Wix[Электронный ресурс]

10. //URL: https://ru.wix.com (Дата обращения: 01.05.2020, режим доступа: свободный).

11. Как создать сайтADI - Wix[Электронный ресурс]

12. //URL: https://support.wix.com/ru/article/как-создать-сайт-adi (Дата обращения: 01.05.2020, режим доступа: свободный).

13. WixCode- Wix[Электронный ресурс]

14. //URL: https://www.wix.com/blog/2017/12/wix-code-creation-without-limits/(Дата обращения: 01.05.2020, режим доступа: свободный).

15. UCoz- Википедия[Электронный ресурс]

16. //URL: https://ru.wikipedia.org/wiki/UCoz(Дата обращения: 01.05.2020, режим доступа: свободный).

17. Сеть кинотеатров КИНОМАКС - Киномакс[Электронный ресурс]

18. //URL: https://kinomax.ru(Дата обращения: 01.05.2020, режим доступа: свободный).

19. Что такое реляционная база данных? - AmazonWebServices[Электронный ресурс]

20. //URL: https://aws.amazon.com/ru/relational-database/(Дата обращения: 05.05.2020, режим доступа: свободный).

21. Паттерн репозиторий - Metanit[Электронный ресурс]

22. //URL:https://metanit.com/sharp/articles/mvc/11.php(Дата обращения: 05.05.2020, режим доступа: свободный).

23. Документация по ASP.NET- MicrosoftDocs[Электронный ресурс]

24. //URL: https://docs.microsoft.com/ru-ru/aspnet/core/?view=aspnetcore-3.1(Дата обращения: 05.05.2020, режим доступа: свободный).

25. CSharp- Википедия[Электронный ресурс]

26. //URL: https://ru.wikipedia.org/wiki/C_Sharp(Дата обращения: 05.05.2020, режим доступа: свободный).

27. Документация по .NETCore- MicrosoftDocs[Электронный ресурс]

28. //URL: https://docs.microsoft.com/ru-ru/dotnet/core/(Дата обращения: 05.05.2020, режим доступа: свободный).

29. Microsoft- Википедия [Электронный ресурс]

30. //URL: https://ru.wikipedia.org/wiki/Microsoft(Дата обращения: 05.05.2020, режим доступа: свободный).

31. Homerepositoryfor .NETCore- GitHub[Электронный ресурс]

32. //URL: https://github.com/dotnet/core(Дата обращения: 06.05.2020, режим доступа: свободный).

33. NETFramework- Википедия [Электронный ресурс]

34. //URL: https://ru.wikipedia.org/wiki/.NET_Framework(Дата обращения: 06.05.2020, режим доступа: свободный).

35. NuGetGallery- NuGet[Электронный ресурс]

36. //URL: https://www.nuget.org(Дата обращения: 06.05.2020, режим доступа: свободный).

37. CoreCLR- GitHub[Электронный ресурс]

38. //URL: https://github.com/dotnet/runtime(Дата обращения: 06.05.2020, режим доступа: свободный).

39. Model-View-Controller- Википедия [Электронный ресурс]

40. //URL: https://ru.wikipedia.org/wiki/Model-View-Controller(Дата обращения: 08.05.2020, режим доступа: свободный).

41. Руководство по EntityFrameworkCore- MicrosoftDocs[Электронный ресурс]

42. //URL: https://docs.microsoft.com/ru-ru/ef/core/(Дата обращения: 08.05.2020, режим доступа: свободный).

43. AzureBlobstorage- MicrosoftAzure[Электронный ресурс]

44. //URL: https://azure.microsoft.com/ru-ru/services/storage/blobs/(Дата обращения: 08.05.2020, режим доступа: свободный).

Размещено на Allbest.ru


Подобные документы

  • Рассмотрение инфологической и даталогической модели базы данных кинотеатров города. Разработка базы данных в программе MS Access. Описание структуры приложения и интерфейса пользователя. Изучение SQL-запросов на вывод информации о кинотеатре и о фильме.

    курсовая работа [1,1 M], добавлен 04.09.2014

  • Разработка клиентского приложения для работы с базой данных (БД) санатория. Классификации БД и приложений для работы с ними. Алгоритмическое и программное конструирование БД. Описание объектов предметной области, их атрибутов и связей между ними.

    курсовая работа [1,9 M], добавлен 08.01.2014

  • Проектирование системы управления базами данных. Особенности реализации в MS SQL. Разработка пользовательского интерфейса. Тестирование и отладка приложения. Руководство пользователя и системного администратора. Анализ и методы разработки приложений.

    курсовая работа [867,9 K], добавлен 16.07.2013

  • Обзор программных средств разработки приложений и обоснование выбора языка программирования. Классификация приложений для работы с базами данных. Функциональная структура базы данных с указанием назначения программных модулей, руководство пользователя.

    дипломная работа [645,3 K], добавлен 21.11.2010

  • Создание структуры базы данных на примере "Школьного журнала" с использованием метода и принципа нормализации. Понятия базы данных, архитектуры БД и проектирования. Описание предметной области; приложения для работы с базой данных TTable и TQuery.

    дипломная работа [996,4 K], добавлен 01.04.2012

  • Разработка реляционных баз данных. Обслуживание и применение сервисных средств. Применение языков запросов для создания приложений. Базы данных в корпоративных сетях. Автоматизация работы с базой данных. Объединение компонентов в единое приложение.

    методичка [430,2 K], добавлен 22.11.2008

  • Разработка и реализация электронной базы данных "Справочная система кинотеатров города Симферополь", обеспечивающей хранение, накопление и предоставление всей необходимой информации о фильмах, кинотеатрах, сеансах. Создание инсталляционного пакета.

    курсовая работа [3,0 M], добавлен 14.07.2012

  • Администрирование баз данных. Проектирование баз данных, язык запросов к базе данных. Анализ средств разработки приложений. Планирование разработки программы "Электронный каталог" для библиотеки ОГАУ, предварительный проект и практическая реализация.

    дипломная работа [1,2 M], добавлен 02.06.2015

  • Типичные "единичные" объемы данных. Проект Sun и InternetArchive в одном контейнере. Ограничения вычислительных систем, веб-приложений. Поиск закономерностей в данных. Модель предсказания вектора покупательской активности. Проектирования хранилищ данных.

    презентация [533,8 K], добавлен 18.01.2014

  • Изучение основных принципов разработки приложений баз данных в среде Delphi. Создание таблиц, псевдонима и вычисляемых полей базы данных. Особенности организации поиска и фильтрации. Сортировка данных в таблицах. Построение запросов. Генерация отчетов.

    курсовая работа [1,3 M], добавлен 05.02.2017

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.