我有一个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)如果这是可行的方式,请通知我需要处理/照顾这项工作的事情。
任何帮助/建议将不胜感激 感谢
答案 0 :(得分:0)
是的,你可以在asp.net app中启动微服务。由于C#不是一种功能语言,但您可以使用Application start为.net中的任何应用程序进行初始一次启动