2016-07-05 61 views
1

我有一個ASP.NET MVC應用程序爲我們的網頁提供服務,我們也爲第三方添加了一些服務路由,因爲目前我們只有這個MVC應用程序包裝在我們的數據庫上。 現在我需要實現MQTT消息訂閱者,該訂閱者應該在啓動時將客戶端啓動到MQTT代理。ASP.NET MVC應用程序中的微型窗口服務

我在看實現一個類,它將實現MQTT代理的連接啓動,並且我可以從MVC應用程序的Application_start調用此方法。

原因:爲什麼我想這樣做既有微服務和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經紀人。我真的需要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

相關問題