Приложение, в основном, актуально для крупных компаний с большим количеством подразделений и департаментов в различных странах.
ССК дает возможность с легкостью выстраивать различные бизнес-процессы с привлечением разных сотрудников, используя разграничение доступа на основе ролей. После первоначальной конфигурации системы под конкретного заказчика (внесения данных об организационной структуре, настройки рабочих процессов и прав доступа), появляется возможность:
Система позволяет осуществлять полноценный документооборот для любого документа, зарегистрированного или созданного в приложении:
Таким образом, приложение охватывает все этапы сопровождения контрактов, включая электронную подпись документов.
Приложение разработано с применением сервисно-ориентированного подхода, поэтому решение состоит из нескольких отдельных сервисов. Все компоненты масштабируемы и отделены друг от друга. Azure, в качестве хостинга платформы, по-умолчанию предоставляет мощные инструменты для автоматической масштабируемости, а также обеспечивает высокий уровень SLA (Service Level Agreement) на базе облачных технологий. Таким образом, выбранная архитектура, технологии и подход обеспечивают высочайший уровень надежности и масштабируемости сервиса.
Большая часть компонентов приложения разработана на базе WCF-сервисов. В то же самое время в приложении есть некоторые публичные компоненты (HTTP-интерфейс) и общие сервисы, необходимые для поддержки различных систем-входа. Для обеспечения удобства настройки доступа реализована интеграция с ADFS (Active Directory Federation Services), как со стандартной реализацией SSO (Single Sign-On) в крупных компаниях.
В ближайшем рассмотрении, архитектура приложения, состоит из трёх уровней:
С точки зрения организации рабочего окружения было целесообразно использовать компоненты Azure в качестве слоев, поддерживающих автоматическое развертывание и инициализацию программных компонентов:
Публичная часть представляет собой стандартное веб-приложение, реализованное на платформе ASP.Net MVC 5 с использованием:
Основные понятия
Слой бизнес-логики выделен в отдельный сервис, который предоставляет функциональность посредством WCF API:
Безопасность
Аутентификация в приложении строится на основе токенов. Публичная часть передает токены безопасности при каждом запросе. Токены используются для аутентификации и авторизации пользователя на уровне бизнес-логики. В то же самое время, соединение между публичной частью и API не требует защиты, т.к. доступ к API из сети интернет попросту закрыт. Модули API являются частью внутренней виртуальной сети, к которой допускают только сервисы публичной части, являющиеся частью программного решения.
ORM (Object-Relational Mapping) и DTO (Data Transfer Objects)
В качестве ORM используется Microsoft Entity Framework 7. Передача данных между слоями системы осуществляется посредством передачи DTO, классы которых реализованы без поведения, т.е. содержат только необходимую информацию и никакой логики.
Контекст данных
Поскольку система реализована как сервис, предоставляемый различным заказчикам, мы разделили данные в БД, используя схемы. Каждый клиент системы обладает собственным изолированным набором таблиц, включенным исключительно в его собственную схему.
Контекст данных (Data Context) создается на уровне доступа к данным, с учетом текущего пользователя (и его компании), и определяет конкретную схему данных (и таблицы) с которой в дальнейшем и идет работа.