2016-07-05 5 views
1

У меня есть приложение 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) Если это выполнимо способ, пожалуйста, сообщите мне, что мне нужно обращаться/позаботиться за эту работу вокруг.

Любая помощь/предложения будут оценены Спасибо

+0

или я могу реализовать проект windows в том же решении с уровнем бизнес-репозитория, совместно используемым службой Windows для обработки всей логики прослушивателя событий до уровня данных. – user3775217

ответ

0

да, вы можете запустить микро сервис внутри asp.net приложения. Поскольку C# не является функциональным языком, но вы можете использовать Application start, чтобы сделать начальный однократный запуск для любого приложения в .net

Смежные вопросы