【问题标题】:Azure Mobile App Services or Web App Services for Mobile Applications and Web Admin Panel适用于移动应用程序和 Web 管理面板的 Azure 移动应用服务或 Web 应用服务
【发布时间】:2017-07-25 10:05:24
【问题描述】:

我需要建议,因为我是 .net 和 azure 的新手,我正在为一个具有移动应用程序、基于 Web 的管理面板和网站的项目创建架构。

我计划在 Azure 中托管所有内容。我正在 Xamarin 中创建应用程序。应用需要拥有移动应用服务提供的推送通知、离线同步等功能(控制器继承自TableController)。

我想创建 1 个数据库,供所有 3 个模块使用。我已经创建了一个移动应用服务和数据库。移动应用程序正在按预期使用它。现在我想创建一个网站和基于 Web 的管理面板并使用相同的数据库。这可能吗?

最好的方法是什么?我应该创建一个 Web 项目并通过 REST API 对数据执行操作吗?并将此 API 用于移动应用和基于 Web 的后端?

我真的很困惑 azure 的不同服务和使用哪个服务。我应该使用 .Net Core 还是 .Net。我需要知道最好的方法。

编辑 1:

到目前为止,这就是我所做的,当项目变得复杂时,我需要知道这是否能正常工作。我通过 Azure 移动应用程序创建了数据库和后端。现在我创建了一个 .net MVC 网站并在其中使用 RestSharp 进行 CRUD 操作。我使用以下代码来执行操作。请注意请求网址中的 /tables/ 部分。

        var client = new RestClient("http://xxxxxxx.azurewebsites.net");
        var request = new RestRequest("/tables/request?ZUMO-API-VERSION=2.0.0", Method.POST);

        string data = "{\"createdFor\":\"535862cf-e2b3-41de-99f9-88c47a77750c\",\"status\":\"IN_PROCESS\",\"createdBy\":\"7108147e-c11c-4d78-ac3d-d5d6c5eb78d0\",\"description\":\"Master room 5 door produces strange sound when opened or closed\",\"title\":\"Door Sounds Strange\"}";
        request.AddHeader("Accept", "application/json");
        request.Parameters.Clear();
        request.AddParameter("application/json", data, ParameterType.RequestBody);

        var result = client.Execute(request);
        Console.WriteLine("Content " + result.Content);

获取和发布操作工作正常。这是个好方法吗?

提前致谢

【问题讨论】:

    标签: asp.net azure xamarin mobile asp.net-core


    【解决方案1】:

    正如官方文档中提到的Mobile App Features

    • 身份验证和授权 (AAD,Facebook, Google, Twitter and Microsoft Account,Custom authentication)
    • 数据存储(SQL 数据库、Azure 表存储等)
    • 离线同步
    • 推送通知(客户端 SDKS 与 Azure 通知中心的注册功能无缝集成)
    • Client SDKs(一整套Client SDKs,涵盖原生开发、跨平台开发等)

    据我了解,如果移动应用提供的内置功能完全可以满足您的要求,那么移动应用更适合您,它会节省您的时间。对于 Web API 应用程序,您需要自己完成所有工作。

    现在我想创建一个网站和基于 Web 的管理面板并使用相同的数据库。这可能吗?

    我假设您可以在您的解决方案下创建一个 Azure 移动应用程序(Mobile App)和一个 Web 应用程序(Azure Web App),并且您可以将DbContext 相关类提取到共享类库中。

    我应该使用 .Net Core 还是 .Net。我需要知道最好的方法。

    .NET Core 和 .NET Framework 之间的选择,可以参考官方文档choosing-core-framework-server

    更新:

    您能否看一下编辑 1,并建议这是正确的方法还是会产生问题。

    您的代码可以正常工作,因为移动客户端 SDK 只是按照您提供的方式封装了通用处理。

    注意:

    对于只有经过身份验证的用户才能访问,您需要在登录后添加带有authenticationTokenx-zumo-auth 标头。

    此外,为了让您的 MVC 应用程序从您的移动应用程序中检索数据(需要身份验证),您需要使用您的移动应用程序登录并检索authenticationToken,以便您随后针对您的移动应用程序发出请求。此时,除了Custom authentication,否则你只能利用Client-managed authentication并在你的MVC应用程序中使用JavaScript client library for Azure Mobile Apps来登录移动应用程序并检索authenticationToken,然后你可以从你的前端发送请求或将令牌传递到您的后端。对于 SPA,您可以同时使用 Client-managed authenticationServer-managed authentication

    另外,Adrian Hall 写了一些关于 azure 移动应用开发的有用教程,您可以参考Adrian hall's book

    更新 2:

    对于自定义身份验证using an Identity Database,您只需将用户名和密码传递给您的移动应用程序,然后它将验证用户信息并生成authenticationToken。而对于 Auth0,您首先使用 Auth0 提供程序登录,然后将令牌传递给您的移动应用程序。

    我的移动应用程序有自己的注册和登录选项,使用用户名和密码。

    对于来自 Auth0 的 Username-Password-Authentication 连接,它将为您管理用户,而使用身份数据库时,用户将存储在您的存储中,您需要通过以下方式管理它们自己。

    据我了解,这两种方法都可以为您实现自定义身份验证,但您需要选择与您的场景匹配的更好的方法。

    【讨论】:

    • 您能否看一下编辑 1,并建议这是正确的方法还是会产生问题。我对后端和.net 没有任何经验。我更像是一名移动应用程序开发人员。
    • 感谢图书链接。我认为这会清除一切。
    • 我的移动应用程序有自己的注册和登录选项,用户名和密码,所以我必须实现自定义身份验证并将加密密码保存在数据库中。或者 [第三方] (adrianhall.github.io/develop-mobile-apps-with-csharp-and-azure/…) 解决方案可以实施吗?从网站管理员用户必须登录。
    • 根据你的情况,我更新了我对你问题的回答,你可以参考一下。
    猜你喜欢
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    相关资源
    最近更新 更多