【问题标题】:How can I use Azure functions or logic apps to save data into sql database?如何使用 Azure 函数或逻辑应用将数据保存到 sql 数据库中?
【发布时间】:2019-01-27 17:41:47
【问题描述】:

我有一个 ASP.NET MVC 应用程序,我目前正在将数据保存到 SQL Server 数据库中。

但我想让它松散耦合,这就是为什么我想将此代码取出到 Azure 函数或逻辑应用程序中以保存数据。

目前我在 ASP.NET MVC 应用程序中使用实体框架。

这是我的代码示例:

private async Task SaveDatabaseAsync(List<Device> deviceDataList)
{
    // save device information into database
    _Repository.InsertMultipleDevices(deviceDataList); // used AddRange

    await _Repository.SaveAsync();

    // save message data information into database
    await SaveMessageData(deviceList);
}

private async Task SaveMessageData(List<Device> deviceListData , List<MessageData> messageDataList)
{
    // replace device id PK because device id is FK in Message table which is previously saved SaveDeviceToDatabaseAsync
    foreach (var messageData in messageDataList)
    {
        var deviceData = deviceListData.FirstOrDefault(t => Convert.ToInt32(t.Id.ToString()) == messageData.Id);
        messageData.Id = deviceData?.Id ?? 0;
    }

    MessageDataRepository _messageDataRepository = new MessageDataRepository(new IoTSimulatordbContext());
    _messageDataRepository.InsertMessageDataMultiple(messageData); // used AddRange
    await _messageDataRepository.SaveAsync();
}

现在我正在尝试在 Azure 函数或逻辑应用程序中执行相同的操作。如果记录数以千计,哪个会更好更快?

这种情况下如何实现替换外键逻辑?

【问题讨论】:

  • 我不确定我是否完全理解你所问的问题......显然,没有什么能阻止你在 Azure 函数或逻辑应用程序中运行现有的。主要问题是否与如何让多个独立的 Azure Function 实例能够保存可能相关的数据(设备 - 消息)有关?
  • 是的,我正在考虑创建一个 http 触发 azure 函数,我将从 mvc 应用程序触发并将设备数据和消息数据传递给该 azure 函数,我将执行存储过程以插入设备表数据和消息表数据,这有意义吗?
  • 可能值得考虑的是拥有一堆 Azure Functions 作为存储所有者(SQL 或其他东西)的微服务......这包括保存部分以及检索部分...
  • 任何实现链接,你可以提供一个很好的开始谢谢:)

标签: c# azure azure-sql-database azure-functions azure-logic-apps


【解决方案1】:

这是一个架构问题,我强烈建议您阅读Azure Architecture documentation。您的问题是询问一种称为命令查询职责分离或 CQRS 的设计模式。您需要考虑数据库更新中“最终一致性”的影响,这可以推动数据库和应用程序业务逻辑的完全重新设计。

我的经验是,逻辑应用的设置速度比 Azure 函数更快,但如果您有大量数据,Azure 函数的执行速度更快且成本更低。您还需要考虑延迟对用户体验的可能影响。 您应该阅读 Troy Hunt 的这篇文章:https://www.troyhunt.com/azure-functions-in-practice/

我主要使用 Azure Functions 来更新 Dynamics Customer Engagement(又名 CRM),我不得不依赖使用 Azure 服务总线等其他 Azure 功能来处理跨多个功能的工作分配,以及处理失败的事务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    • 2020-07-07
    • 2015-08-04
    • 2020-11-20
    相关资源
    最近更新 更多