- •Оглавление
- •Обзор и анализ предметной области по курсового проекта
- •Проектирование серверной части по
- •Выбор субд
- •Выделение сущностей и атрибутов из предметной области
- •Выделение связей между сущностями
- •Построение er-диаграммы
- •Описание таблиц и полей
- •Построение физической модели бд
- •Описание хранимых процедур и триггеров
- •Проектирование клиентской части
- •Архитектура по
- •Выбор инструментальных средств
- •Функциональная схема по
- •Описание классов по
- •Классы уровня доступа к данным
- •Классы-контроллеры
- •Классы представления
- •Классы сервисов
- •Вспомогательные классы
- •Интерфейс по
-
Выбор инструментальных средств
Разработка приложения велась в интегрированной среде разработки Microsoft Visual Studio 2010. Эта IDE предоставляет одинаково удобные возможности как для работы с исходным кодом (C# и ASP.NET-разметкой), так и для управления базами данных.
Для контроля версий использовалась свободно-распространяемая распределенная система управления версий Git.
-
Функциональная схема по
При разработке использовались следующие технологии:
-
ASP.NET MVC 2. Наиболее распространенная на момент начала разработки версия фреймворка от
-
ORM (Object-Relations Mapping). Система ORM, в данном случае, EntityFramework 4.1, позволяют программисту реализовывать один высокоуровневый и обобщенный интерфейс к БД, не имея необходимости писать и править SQL-запросы для каждой конкретной СУБД. Таким образом понижается уровень зависимости бизнес-логики от реализации хранения данных конкретной СУБД.
-
Code-first. Одна из 3 доступных методологий разработки на EF (наравне с Model-first, Database-First, Code-First), где разработка начинается с описания классов-сущностей схемы БД и отношений между ними с помощью кода на любом языке платформы .NET.
ПО представляет собой клиент-серверное приложение, где клиентом является веб-браузер, а в роли сервера выступает IIS.
Схема функционирования ПО приведена на рис.3.

Рис. 3 Схема взаимодействия компонентов приложения
-
Описание классов по
-
Классы уровня доступа к данным
-
-
IAccessPoint – интерфейс, описывающий базу данных приложения. Определяет таблицы, используя системный интерфейс IDbSet<T>, а также метод для сохранения изменений в БД.
-
DbAccessPoint – класс, реализующий интерфейс IAccessPoint, и наследующий системный класс Entity Framework DbContext; в его задачи входит обеспечение доступа к БД и управление процессом создания базы данных.
-
Внутренний метод OnModelCreating управляет созданием отношения один-ко-многим «Проекты – программисты (команда проекта)».
-
-
Класс InMemoryDbSet<T> - реализует интерфейс IDbSet<T> и определяет дополнительные методы и свойства для работы с набором данных внутри памяти, без обращения к реальной физической базе данных. Этот класс используется для юнит-тестирования.
-
Класс NewDatabaseInitializer<T>, расширяет стандартную стратегию пересоздания БД DropCreateDatabaseIfModelChanges<T> в случае несоответствия схемы DbContext и существующей структуры базы данных. В новой стратегии физическое удаление базы данных не происходит, а лишь удаляются все объекты БД.
-
Остальные классы – Project, Task, Role, User, ProjectStatus, используются для отражения соответствующих таблиц БД на объекты .NET Framework системой Entity Framework.
-
Классы-контроллеры
В MVC весь процесс пользовательского ввода-вывода контролируется контроллерами. Соответственно, они занимают наиболее важное место в данном приложении. Контроллеры обращаются к объектам доступа к данным и используют представления для формирования ответа клиенту.
-
AccountController. Управляет редактированием пользовательских данных, изменением ролей, регистрацией и авторизацией пользователей.
-
ErrorController. Служебный класс, использующийся для отображения пользователю ошибок приложения.
-
HomeController. Выводит домашнюю страницу пользователей и обрабатывает запросы неавторизованных пользователей.
-
ProjectController. Управляет всем, связанным с проектами – создание, редактирование информации, удаление, изменение команды проекта, а так же контролирует доступ пользователей в зависимости от ролей и принадлежности к командам.
-
TaskController. Управляет всем, связанным с заданиями – создание, редактирование информации, удаление, назначение ответственного разработчика, а так же контролирует доступ пользователей в зависимости от ролей и принадлежности к командам.
Методы классов-контроллеров обрабатывают поступающие пользовательские запросы в соответствии с настройками роутинга на уровне приложения. Эти настройки определены в файле Global.asax
