Azure:是否可以在没有虚拟机的情况下创建休息服务?

时间:2017-02-07 17:22:04

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

是否有机会创建自定义REST服务而无需创建虚拟机(无论是其他服务器还是软件都可以直接使用azure SQL)来提供服务。

情况:

  • 我有一个天蓝色的SQL实例
  • 我想在几个SQL数据库中调用一堆存储过程作为REST服务

我想将此过程称为REST服务,向它们发送参数(string,int)并以JSON格式获取结果。我也对这种服务的访问控制感兴趣。

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

我不需要完整的解决方案,如果可能的话我需要一个答案,我应该使用什么样的解决方案(资源)。我已经阅读了很多,但我仍然无法找到解决方案。

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

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

我认为最简单的方法是使用Azure函数和Http Trigger模板。您唯一需要做的就是从内容或查询字符串中提取变量:

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

答案 2 :(得分:0)

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

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