Использование веб-сервисов для загрузки заказов клиентов с использованием .Net - PullRequest
0 голосов
/ 12 ноября 2018

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

Какова будет лучшая практика в этом случае использования технологий Microsoft или Open-Source для удовлетворения требований клиентов?

Вариант1:

  1. Веб-сервис принимает данные XML / JSON
  2. Хранит данные локально в файле
  3. Задача забирает файл и пытается загрузить данные в фоновом режиме
  4. Отправить письмо для записей, которые не удалось

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

Option2:

  1. Веб-сервис принимает данные XML / JSON
  2. Попытка загрузки данных
  3. Немедленно реагировать, если загрузка была успешной или неудачной

Недостатком здесь является то, что если объем заказов увеличивается в несколько раз в ближайшем будущем, если инфраструктура сможет справиться с этим.

Я открыт для использования REST с WCF или Web API и любыми другими полезными технологиями, которые можно масштабировать по мере роста спроса.

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Я делаю это, используя ActiveMQ в качестве центрального брокера сообщений (вы также можете использовать служебную шину Azure, если у вас есть подписка Azure) и предварительно запеченные доменные объекты.Для вашего сценария это может выглядеть следующим образом:

Веб-служба принимает данные XML / JSON

Да, у вас есть служба REST, которая принимает многочастные запросы, скажем, JSON какс клиентом легче работать.Прежде чем отправлять сообщения, обычно лучше преобразовать входящее клиентское сообщение в сообщение домена, чтобы все потребители сообщений знали точный ожидаемый формат и, следовательно, могли проверить сообщение.Я обычно создаю их, используя xsd.exe в Windows, используя файл XSD, который описывает формат объекта.xsd.exe превращает XSD в класс C #.Тогда это просто процесс взятия полей JSON и заполнения класса Order.Затем Order отправляется в качестве сообщения брокеру.В этот момент вы находитесь в зоне гарантированного обмена сообщениями, поскольку JMS позаботится об этом, а ActiveMQ позаботится о сохранности сообщений.

Локально хранит данные в файле

, а не файл, вы конвертируете входящий JSON в класс домена, например, экземпляр Order.Вы никогда не увидите JSON или XML за пределами этой точки, так как здесь находятся все классы доменов.

Задача забирает файл и пытается загрузить данные в фоновом режиме

да, у посредника есть маршруты, определенные в конфигурации Camel, которые говорят ему, например, отправлять сообщения, поступающие по теме /client, в тему /orders.Задача настроена как постоянный подписчик темы, поэтому автоматически получает этот объект домена заказа.

Отправка электронного письма с ошибками записей

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

если объем заказов в ближайшем будущем увеличится в несколько раз

, вы можете объединить брокеров и запустить несколько потребителей заказов.Если вы разделяете обработку ошибок на другой маршрут, все, что нужно сделать для задачи заказа, - это обработать заказ и направить сообщение в тему /error или /success в зависимости от результата.Таким образом, каждый маршрут содержит небольшой кусочек головоломки, и вы можете увеличивать его, если загадка становится слишком большой.

0 голосов
/ 13 ноября 2018

Вы пробовали очереди сообщений?

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

Сообщение может быть просто информацией или заданием, которое будет обработано другим приложением.

Приложение может выступать как производителем, так и потребителем.

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

Вот полное введение по этому поводу: https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.html

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

Идеально подходит для обработки огромного количества процессов. Как всегда, вы можете начать с малого (даже бесплатно) и расширять его в будущем.

Посмотрите детали ценообразования https://www.cloudamqp.com/, которые предоставляют программное обеспечение rabbitmq в качестве услуги.

...