ASP.NET MVC应用程序内的微窗口服务

时间:2016-07-05 11:25:13

标签: c# asp.net .net asp.net-mvc windows-services

我有一个ASP.NET MVC应用程序服务我们的网页,我们还为第三方添加了一些服务路由,因为目前我们只有这个MVC应用程序包装在我们的数据库上。 现在我需要实现MQTT消息订阅者,它应该在启动时启动客户端到MQTT代理。

我正在研究实现一个实现MQTT代理连接启动的类,我可以从MVC app的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代理的连接的地方。

我有更多疑惑 1)我是否真的需要Windows服务来建立与代理的连接,我的意思是每次MVC应用程序域启动时都会触发MVC 5 application_start,无论是通过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)如果这是可行的方式,请通知我需要处理/照顾这项工作的事情。

任何帮助/建议将不胜感激 感谢

1 个答案:

答案 0 :(得分:0)

是的,你可以在asp.net app中启动微服务。由于C#不是一种功能语言,但您可以使用Application start为.net中的任何应用程序进行初始一次启动