【问题标题】:micro windows service inside ASP.NET MVC appASP.NET MVC 应用程序中的微窗口服务
【发布时间】:2016-07-05 11:25:13
【问题描述】:

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

我正在研究实现一个类,该类将实现到 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 代理的连接的地方。

我还有几个疑问 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)如果这是可行的方法,请告诉我我需要处理/照顾此解决方法的事情。

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

【问题讨论】:

  • 或者我可以在同一个解决方案中实现 windows 项目,业务/存储库层与 windows 服务共享,并处理所有事件监听器逻辑到数据层。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 2013-11-12
    • 1970-01-01
    相关资源
    最近更新 更多