| 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]。