У меня есть приложение ASP.NET MVC, обслуживающее наши веб-страницы, и мы также добавили несколько маршрутов обслуживания для сторонних разработчиков, так как в настоящее время у нас есть только эта оболочка приложения MVC в нашей базе данных. Теперь мне нужно реализовать подписчика сообщений MQTT, который должен запустить клиент для брокера MQTT при запуске.служба микро windows в приложении ASP.NET MVC
Я искал реализацию класса, который будет реализовывать инициализацию соединения с брокером MQTT, и этот метод я могу вызвать из приложения Application_start из MVC.
Причина: почему я хочу сделать это, имея как микросервис, так и проект MVC, потому что это очень маленький проект, и мы находимся на начальной стадии перехода в живую и не хотим масштабировать текущую систему. Использование микросервиса будет также мне нужно реализовать/создать маршруты REST для микросервиса при получении событий от брокера, и я думаю, что я могу справиться, если лучше реализовать внутри приложения MVC непосредственно в репозитории базы данных.
Я хочу знать петли/проблемы, с которыми мое приложение MVC может стать жертвой, следуя этому подходу.
Пока мой код выглядит этот
Global.asax.cs файл
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
MQTTSubscriber.StartMQTTSubscriber();
}
MQTTSubscriber.StartMQTTSubscriber(), где я буду обрабатывать связь с MQTT брокера.
Еще несколько сомнений у меня есть 1) Нужен ли мне сервис Windows для установления соединения с брокером, я имею в виду MVC 5 application_start будет запускаться каждый раз, когда будет запущен домен приложения MVC, будь то через IIS или Visual Studio, и я могу написать соединение установить логику внутри MQTTSubscriber.StartMQTTSubscriber() как следующий
// create client instance
MqttClient client = new MqttClient(IPAddress.Parse(MQTT_BROKER_ADDRESS));
// register to message received
client.MqttMsgPublishReceived += client_MqttMsgPublishReceived;
string clientId = Guid.NewGuid().ToString();
client.Connect(clientId);
// subscribe to the topic "/home/temperature" with QoS 2
client.Subscribe(new string[] { "/home/temperature" }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE });
2) Если это выполнимо способ, пожалуйста, сообщите мне, что мне нужно обращаться/позаботиться за эту работу вокруг.
Любая помощь/предложения будут оценены Спасибо
или я могу реализовать проект windows в том же решении с уровнем бизнес-репозитория, совместно используемым службой Windows для обработки всей логики прослушивателя событий до уровня данных. – user3775217