| page_type | 语言 | 产品 | 描述 | urlfragment | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
样本 |
|
| 使用更改跟踪API在应用和云之间同步数据 | Azure-SQL-DB-DOTNET-REST-API |
如果您正在开发一个必须能够与云断开连接的应用程序,那么在某个时候,您肯定需要实现从云下载最新数据以刷新该应用程序本地数据的功能。有效地执行此操作可能很棘手,因为您需要了解自应用程序与该应用程序同步以来云上发生的变化是什么,因此您只能发送差异。
使用Azure SQL,您可以利用更改跟踪来检测哪些行从上次同步并生成仅包含这些更改的有效载荷时已更改。这样的东西:
{
"Metadata" : {
"Sync" : {
"Version" : 6 ,
"Type" : " Diff "
}
},
"Data" : [
{
"$operation" : " U " ,
"Id" : 10 ,
"RecordedOn" : " 2019-10-27T17:54:48-08:00 " ,
"Type" : " Run " ,
"Steps" : 3450 ,
"Distance" : 4981
},
{
"$operation" : " I " ,
"Id" : 11 ,
"RecordedOn" : " 2019-10-26T18:24:32-08:00 " ,
"Type" : " Run " ,
"Steps" : 4866 ,
"Distance" : 4562
}
]
}好吧,更确切地说,您不仅可以检测更改,而且还可以直接从Azure SQL生成JSON,以便您可以利用Azure SQL在其所有功能中提供的惊人集成,并创建精美的简单代码。
请参见更多技术细节:使用更改跟踪API将移动应用与Azure同步
我还准备了一个视频,可以在10分钟内显示您使用Change Trucking API的生活可以更简单。
](https://www.youtube.com/watch?v=c1bmnruu6wc)
确保您有一个使用Azure SQL DB数据库。如果您没有Azure帐户,则可以免费创建一个帐户,其中还包括免费的Azure SQL DB Tier:
https://azure.microsoft.com/en-us/free/free-account-faq/
要创建一个新的数据库,请按照此处的指示进行操作:
创建Azure SQL数据库
或者,如果您已经对Azure CLI感到满意,则可以执行(使用Bash,通过WSL,Linux环境或Azure Cloud Shell)
az group create -n < my-resource-group > -l WestUS2
az sql server create -g < my-resource-group > -n < my-server-name > -u < my-user > -p < my-password >
az sql db create -g < my-resource-group > --server < my-server-name > -n CTSample --service-objective HS_Gen5_2创建数据库后,您可以使用Azure Data Studio连接到它。如果您需要通过Azure Data Studio建立与Azure SQL的第一个连接的帮助,则此快速视频将为您提供帮助:
如何从Azure Data Studio连接到Azure SQL数据库
创建数据库后,您需要启用更改跟踪,并添加一个将从.NET调用的存储过程。 SQL代码可在此处提供:
./SQL/01-change-tracking-setup.sql./SQL/02-stored-procedure.sql请按顺序执行创建数据库上的脚本。
如果您在执行SQL脚本时需要任何帮助,可以在此处找到快速启动:QuickStart:使用Azure Data Studio连接和查询Azure SQL数据库
确保计算机上安装了.NET Core 3.0 SDK。克隆此回购在我们的计算机上的目录中,然后在appsettings.json中配置连接字符串。
如果出于安全原因,您不想将连接字符串保存在appsettings.json文件中,则可以使用环境变量设置它:
Linux:
export ConnectionStrings__DefaultConnection= " <your-connection-string> "视窗:
$ Env: ConnectionStrings__DefaultConnection = " <your-connection-string> "您的连接字符串类似:
SERVER=<your-server-name>.database.windows.net;DATABASE=<your-database-name>;UID=DotNetWebApp;PWD=a987REALLY#$%TRONGpa44w0rd!
只需用适合您的环境的正确值替换<your-server-name>和<your-database-name> 。
要在本地运行和测试REST API,只需运行
dotnet run.NET将启动HTTP服务器,当所有内容启动并运行时,您都会看到类似的东西
Now listening on: https://localhost:5001
使用REST客户端(例如Visual Studio,Insomnia,Curl或Powershell的Invoke-testmethod)),您现在可以致电API,例如:
curl -s -k -H " fromVersion: 0 " --url https://localhost:5001/trainingsession/sync而且您将获得以下内容:
{
"Metadata" : {
"Sync" : {
"Version" : 6 ,
"Type" : " Full " ,
"ReasonCode" : 0
}
},
"Data" : [
{
"Id" : 9 ,
"RecordedOn" : " 2019-10-28T17:27:23-08:00 " ,
"Type" : " Run " ,
"Steps" : 3784 ,
"Distance" : 5123
},
{
"Id" : 10 ,
"RecordedOn" : " 2019-10-27T17:54:48-08:00 " ,
"Type" : " Run " ,
"Steps" : 0 ,
"Distance" : 4981
}
]
}来自Visual Studio代码的调试得到充分支持。如果您有.env ,它将用于获取连接字符串:这意味着,至少.env文件需要如下:
ConnectionStrings__DefaultConnection="<the-connection-string>"
如下一部分所述, .env文件还用于读取将解决方案部署到Azure所需的值。
现在,您的REST API解决方案已经准备好了,现在该将其部署在Azure上,以便任何人都可以利用它。一篇详细的文章,介绍了您如何在这里:
除上述文章中解释的内容外,您唯一要做的就是将连接字符串添加到Azure Web应用程序配置中。例如,使用AZ CLI:
AppName= " azure-sql-db-dotnet-rest-api "
ResourceGroup= " my-resource-group "
az webapp config connection-string set
-g $ResourceGroup
-n $AppName
--settings DefaultConnection= $ConnectionStrings__DefaultConnection
--connection-string-type=SQLAzure只需确保您正确设置$AppName和$ResourceGroup即可匹配您的环境,还可以确保$ConnectionStrings__DefaultConnection以及“本地运行示例”部分所述。
在此处可用的完整脚本的一个完整脚本的示例: azure-deploy.sh 。脚本需要并运行.env文件。如果没有,它将为您创建一个空的。确保您用适合环境的正确值填充它,您会很好。
.env文件看起来如下:
ResourceGroup="<resource-group-name>"
AppName="<app-name>"
Location="WestUS2"
ConnectionStrings__DefaultConnection="<the-connection-string>"
如果您不熟悉.NET并想了解更多信息,那么Microsoft Learn Learn Platform上有很多教程。您可以从这里开始,例如:
如果您还想了解有关Visual Studio代码的更多信息,这里是另一个资源:
在Visual Studio代码中使用.NET Core
该项目欢迎贡献和建议。大多数捐款要求您同意撰写贡献者许可协议(CLA),宣布您有权并实际上授予我们使用您的贡献的权利。有关详细信息,请访问https://cla.opensource.microsoft.com。
当您提交拉动请求时,CLA机器人将自动确定您是否需要提供CLA并适当装饰PR(例如状态检查,评论)。只需按照机器人提供的说明即可。您只需要使用我们的CLA在所有存储库中进行一次。
该项目采用了Microsoft开源的行为代码。有关更多信息,请参见《行为守则常见问题守则》或与其他问题或评论联系[email protected]。