【问题标题】:Azure: is it possible to create rest service without virtual machine?Azure:是否可以在没有虚拟机的情况下创建休息服务?
【发布时间】:2017-06-25 01:35:43
【问题描述】:

是否有机会在不创建虚拟机的情况下创建自定义 REST 服务(无论如何,其他一些带有软件的服务器可以直接使用 azure SQL)来提供服务。

情况:

  • 我有一个 Azure SQL 实例
  • 在几个 SQL 数据库中有一堆存储过程,我想将它们作为 REST 服务调用

我想将此过程称为 REST 服务,向它们发送参数(字符串、整数)并获得 JSON 格式的结果。我也对此类服务的访问控制感兴趣。

我可以使用自己的软件(连接到 Azure SQL)创建所有这些东西,但是 azure 本身是否有这样的机会?

我不需要完整的解决方案,如果可能的话,我需要一个答案,以及我应该使用 azure 上的哪种解决方案(资源)。我已经阅读了很多,但我仍然找不到解决方案。

rem:我需要 Azure,因为在项目中使用了它的存储和分析引擎。

【问题讨论】:

  • 你看过 Azure App Services 下的 Azure API 或 Web App 吗?它允许你在不管理 VM 的情况下托管 REST 服务(尽管 Azure 为你管理后台的机器)

标签: azure azure-sql-database azure-storage


【解决方案1】:

Azure WebApp 或 Azure Functions 将是您的最佳选择,它们提供了运行代码的能力,而无需管理底层结构。根据您的情况,您可能会选择其中一种。

【讨论】:

    【解决方案2】:

    我相信最简单的方法是使用带有 Http Trigger 模板的 Azure Functions。您唯一需要做的就是从内容或查询字符串中提取变量:

    using System.Net;
    using System.Threading.Tasks;
    
    public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
    {
        log.Info($"C# HTTP trigger function processed a request. RequestUri={req.RequestUri}");
    
        // parse query parameter
        string name = req.GetQueryNameValuePairs()
            .FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
            .Value;
    
        // Get request body
        dynamic data = await req.Content.ReadAsAsync<object>();
    
        // Set name to query string or body data
        name = name ?? data?.name;
    
        return name == null
            ? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
            : req.CreateResponse(HttpStatusCode.OK, "Hello " + name);
    }
    

    更多信息:https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-http-webhook

    【讨论】:

      【解决方案3】:

      我肯定会为此推荐 Azure 函数。在前面的答案中,您可以看到如何生成响应,这里是如何调用存储过程的示例 - https://www.codeproject.com/Articles/1169531/Sending-events-from-Azure-Event-Hub-to-Azure-SQL-D

      Azure SQL 具有 FOR JSON 子句,可以将 sql 查询的结果转换为 JSON 文本,因此您可以直接将其作为 Http 响应进行流式传输。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-08
        • 1970-01-01
        • 2014-06-16
        相关资源
        最近更新 更多