繁体   English   中英

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

[英]micro windows service inside ASP.NET MVC app

我有一个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)如果这是可行的方式,请通知我需要处理/照顾这项工作的事情。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM