Как реализовать сервис уведомлений внутри Интранет сети? Добрый день. Вопрос большой, но пока интересует архитектура как это должно быть.
Итак, представьте что есть большое предприятие, с Интранет сетью, Active Directory c примерно 5000 активных пользователей. Внутри предприятия силами отдела разработки создано многочисленные как десктоп так и веб-приложения.
Необходимо создать некий сервис уведомлений, которым смогут пользоваться как разработчики со стороны своих приложений (т.е. интегрироваться с ним, и с помощью него отправлять уведомления) так и конечные пользователи, которые с помощью десктоп клиента или же веб-клиента получать уведомления адресованные им.
Одними из основных требований этих уведомлений, это то что они все должны где то хранится, а именно в базе данных, и каждое уведомление должно иметь своего получателя, прочитанность которого также должна фиксироваться в базе данных.
Я лишь ещё начинающий разработчик на C#, только только начинаю изучать это, потому я пока пытаюсь понять концепцию как это должно работать, считая что у этого сервиса в будущем должны быть различные дополнительные и обязательные функции (такие как контроль доступ к API, к возможности создания уведомления, его чтения и т.п.)
То сначала хочу понять как это на архитектурном уровне должно быть, чтобы потом могло легко допиливаться.Прошу отнестись к моим высказываниям как совсем ещё начинающему разработчику.
Как я это вижу, допустим в качестве базы данных используется Oracle, хотя подразумеваю что нужно делать так, чтобы было без разницы какая база, что MySQL, MSSQL, Postgresql и т.п.
Т.к. подразумеваю, что база данных используется только как хранилище, только для CRUD (никакой бизнес логики в ней не должно быть, бизнес логику хочу поместить в приложение)
Модель базы данных понравилась здесь www.vertabelo.com/blog/technical-articles/database...
Т.к. в ней есть понятие именно одного сообщения, и отдельных уведомлений с привязкой к сообщению для каждого пользователя, а также идеология групп подписок.
Т.е. по базе данных имею грубо говоря набор из 3х таблиц на первую простейшую реализацию, это message, message_recipient и user. С помощью которых уже можно создавать сообщения их уведомления с фактом прочтённости и со связью с получателем.
Сам механизм создания этих сообщения, я хочу поместить в отдельно живущее API в виде WebAPI на C#, которое по программе минимум будет иметь набор из несколько методов (или как то они подругому называются),с помощью которых можно создать сообщение и получить сообщение.
Т.е. разработчик будет отправлять на WebAPI некий HTTP запрос, где в параметрах как минимум укажет Текст сообщения, Идентификатор получателя/елей. Например:
ТЕКСТ СООБЩЕНИЯ: На вас назначена задача
ПОЛУЧАТЕЛЬ: "ivanov.aa","petrov.bb","sidorov.cc"
Таким образом в базе в таблице message создастся одна строка (т.к. одно сообщение) в таблице message_recipient 3 строки (т.к. 3 получателя) со связью на одну строку из таблицы message и по одной связи от каждой строки к таблице user соответственно по получателю
Таким образом будет на сервере приложений висеть в ожидание запросов некое WebAPI к которому будут обращаться разработчики со стороны своих приложений (тут конечно на будущее нужно будет как раз ещё как то реализовать разграничение прав доступ к API, т.е. вообще возможность создания сообщения, возможность кому отправлять сообщения (каким пользователям или сразу подписки с группой пользователей/подписчиков) но это уже потом
А далее получается нужен как минимум десктоп клиент, который будет висеть в трее пользователя и периодически опрашивать это же WebAPI на получение новых уведомлений с контекстом в виде текущего авторизованного в ОС пользователя. На что WebAPI должно выдать только те сообщения, которые доступны по связям текущему пользователю.
Пока не забегая далее вперёд, что можете сразу посоветовать, предупредить и по рекомендовать. Спасибо!

21 Авг 2019 в 06:40
181 +1
0
Ответы
1

Для реализации сервиса уведомлений внутри Интранет сети можно использовать следующую архитектуру:

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

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

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

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

Надеюсь, что эти рекомендации помогут вам правильно спроектировать и реализовать сервис уведомлений в вашей Интранет сети. Удачи в разработке!

20 Апр в 13:14
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 706 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир