我需要建议,因为我是 .net 和 azure 的新手,我正在为一个具有移动应用程序、基于 Web 的管理面板和网站的项目创建一个架构。
我计划在 Azure 中托管所有内容。我正在Xamarin中创建应用程序。应用程序需要具有推送通知、离线同步等功能,这些功能由移动应用程序服务(控制器继承自 TableController)。
我想创建 1 个数据库,该数据库将被所有 3 个模块使用。我已经创建了一个移动应用服务和数据库。移动应用程序正在按预期使用它。现在我想创建一个网站和基于 Web 的管理面板并使用相同的数据库。这可能吗?
最好的方法是什么?我是否应该创建一个 Web 项目并通过 REST API 对数据执行操作?并将此 API 用于移动应用程序和基于 Web 的后端?
我真的很困惑来自 azure 的不同服务以及使用哪一个。我应该使用.Net Core还是.Net。我需要知道最好的方法。
编辑 1 :
到目前为止,这就是我所做的,我需要知道当项目变得复杂时,这是否会在未来正常工作。我通过 Azure 移动应用创建了数据库和后端。现在我创建了一个.net MVC网站,并使用RestSharp进行CRUD操作。我使用以下代码来执行操作。记下请求 URL 中的/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);
获取和提交操作工作正常。这是个好办法吗?
提前致谢
正如官方文档提到的移动应用程序功能:
-
身份验证和授权(
AAD,Facebook, Google, Twitter and Microsoft Account,Custom authentication
) - 数据存储(SQL 数据库、Azure 表存储等)
- 离线同步
- 推送通知(客户端 SDK 与 Azure 通知中心的注册功能无缝集成) 客户端 SDK
- (涵盖原生开发、跨平台开发等的完整客户端 SDK)
据我了解,如果移动应用程序提供的内置功能可以完全满足您的要求,那么移动应用程序更适合您,并且可以节省您的时间。对于 Web API 应用程序,您需要自己完成所有操作。
现在我想创建一个网站和基于 Web 的管理面板并使用相同的数据库。这可能吗?
我假设你可以在解决方案下创建一个 Azure 移动应用应用程序(移动应用)和一个 Web 应用程序(Azure Web 应用),并且可以将DbContext
相关的类提取到共享类库中。
我应该使用.Net Core还是.Net。我需要知道最好的方法。
对于.NET Core和.NET Framework之间的选择,您可以参考有关选择核心框架服务器的官方文档。
更新:
您能否看一下编辑 1,并建议这是否是正确的方法或它可能会产生问题。
您的代码可以正常工作,因为移动客户端 SDK 只是将您提供的通用处理包装在一起。
注意:
对于仅由经过身份验证的用户访问,您需要在登录后添加带有authenticationToken
x-zumo-auth
标头。
此外,要使 MVC 应用程序从移动应用检索数据(需要身份验证),需要使用移动应用登录并检索针对移动应用的后续请求的authenticationToken
。此时,自定义身份验证除外,否则只能利用客户端管理的身份验证,并在 MVC 应用程序中使用 Azure 移动应用的 JavaScript 客户端库登录到移动应用并检索authenticationToken
,然后可以从前端发送请求或将令牌传递到后端。对于 SPA,可以同时使用客户端管理的身份验证和服务器管理的身份验证。
此外,Adrian Hall 编写了一些关于针对 azure 移动应用程序进行开发的有用教程,你可以参考 Adrian Hall 的书。
UPDATE2:
对于使用身份数据库的自定义身份验证,您只需将用户名和密码传递给您的移动应用程序,然后它将验证用户信息并生成authenticationToken
。对于 Auth0,您首先使用 Auth0 提供程序登录,然后将令牌传递给您的移动应用程序。
我的移动应用程序有自己的用户名和密码注册和登录选项。
对于来自 Auth0 的连接用户名-密码-身份验证,它将为您管理用户,而使用身份数据库时,用户将存储在您的存储中,您需要自己管理它们。
根据我的理解,这两种方法都可以为您实现自定义身份验证,但您需要选择与您的方案匹配的更好的方法。