Ich habe eine ASP.NET MVC-Anwendung unserer Webseiten dienen und fügten wir auch einige Service-Routen für Dritte zur Zeit, da wir nur diese MVC App Verpackung auf unserer Datenbank haben. Nun muss ich MQTT Message Subscriber implementieren, der den Client beim Start zum MQTT-Broker starten soll.Mikro Windows-Dienst innerhalb ASP.NET MVC-app
betrachtete ich eine Klasse implementieren, die Verbindung Einleitung zu MQTT Broker umsetzt und diese Methode i von Application_Start von MVC-app aufrufen kann.
Grund: Warum möchte ich dies tun, sowohl MicroService und MVC-Projekt ist, weil dies sehr kleines Projekt ist und wir in der Anfangsphase des GoingLive sind und nicht das aktuelle System skalieren wollen.Implementieren eines Microservice wird brauche ich auch, um REST-Routen für Microservice zu implementieren/zu erstellen, wenn ich Ereignisse vom Broker empfange, was ich denke, dass ich damit umgehen kann, wenn es in der MVC-App direkt im Datenbank-Repository implementiert wird.
ich wissen will, kann die Schleifen/Probleme meine MVC-Anwendung wurde Opfer von diesem Ansatz folgen.
Bisher sieht mein Code wie folgt
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 Datei() ist, wo ich den Anschluss an MQTT Broker zu handhaben werde.
Noch ein paar Zweifel ich habe 1) Brauche ich wirklich Windows-Dienst, um Verbindung zu Broker, ich meine MVC 5 Application_start wird jedes Mal MVC-Anwendungsdomäne wird gestartet werden, sei es durch IIS oder Visual Studio und ich kann Verbindung herstellen Logik innerhalb MQTTSubscriber.StartMQTTSubscriber() wie folgt
// 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) schreiben, wenn dies ist machbar Art und Weise, informieren Sie mich Dinge, die ich behandeln müssen/kümmern für diese Arbeit-around.
Jede Hilfe/Vorschläge werden Dank
zu machen, oder ich kann Windows-Projekt in der gleichen Lösung mit Business/Repository-Schicht mit dem Windows-Dienst als auch implementieren um die gesamte Event-Listener-Logik bis zur Datenebene zu verarbeiten. – user3775217