小编Dan*_*imo的帖子

asp.net中的排队方法执行

我创建了使用AT 命令GSM调制解调器进行通信的信使,但是如果许多用户一次发送和接收消息,那么AT 命令将重叠,这将导致很多问题,所以我认为我的 Web 应用程序需要某种FIFO 队列来存储发送/接收方法执行。
假设我有HttpPost方法,该方法是通过按 网页上的SendMessage按钮执行的,此方法将消息保存到数据库并执行SendSmsReceiveSms方法,这些方法使用AT 命令执行操作,如下面的代码所示。

[HttpPost(Name = "add-message")]
public async Task<IActionResult> PostMessage([FromBody] MessengerViewModel messengerViewModel)
{  
    AtSmsSender smsSender = new AtSmsSender();
    InnerAtSmsReceiver innerAtSmsReceiver = new InnerAtSmsReceiver(_receivedMessagesService);

    await smsSender.SendSms(messengerViewModel.PhoneNr, messengerViewModel.MessageBody);
    await innerAtSmsReceiver.ReceiveSms();

    //Logic of saving message using service
}
Run Code Online (Sandbox Code Playgroud)

我正在搜索队列示例,但我发现的主要是消息队列,它不符合我的想法。我如何将这个Http 方法或其中的方法排队,以便它们在一些延迟后堆叠和执行?
第一次遇到这个东西,如果我的问题陈述得太糟糕,那么抱歉。

c# asp.net queue asp.net-core

5
推荐指数
0
解决办法
302
查看次数

Asp .net Core 使用服务实例调用在 Startup.cs 中运行的另一种方法中的方法

我有一个带有方法的类,它是事件,它获取我需要存储到数据库的数据。

public class DataParser
{
SmsService smsService = new SmsService(..require context...);

 public void ReceiveSms()
 {
     //ParserLogic
     smsService.SaveMessage(...Values...);
 }
}
Run Code Online (Sandbox Code Playgroud)

由于服务在上下文的帮助下保存数据,我需要传递它并在构造函数中初始化。在我这样做之后,当我创建解析器对象以在启动时运行时,需要在那里传递上下文。

public class Startup
{
DataParser data = new DataParser(...requires db context...)
   public void ConfigureServices(IServiceCollection services)
    {
        //Opens port for runtime
        InnerComPortSettings.OpenPort();
        //Runtime sms receiver
        data.ReceiveSms();
    }
}
Run Code Online (Sandbox Code Playgroud)

那么如何正确地将数据保存到数据库呢?

c# asp.net asp.net-core

4
推荐指数
1
解决办法
5152
查看次数

标签 统计

asp.net ×2

asp.net-core ×2

c# ×2

queue ×1