| page_type | языки | продукция | описание | урлфрагмент | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
образец |
|
| Использование 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
}
]
}Что ж, точнее, вы можете не только обнаружить изменения, но и вы можете генерировать JSON непосредственно из Azure SQL, чтобы вы могли воспользоваться удивительной интеграцией, которую Azure SQL предоставляет во всех своих функциях, и создать прекрасно простой код.
Здесь доступны дополнительные технические данные: Sync Mobile Apps с Azure с использованием API отслеживания изменений
Я также подготовил видео, чтобы показать за 10 минут, насколько проще может быть ваша жизнь, используя API отслеживания изменений.
] (https://www.youtube.com/watch?v=c1bmnruu6wc)
Убедитесь, что у вас есть база данных Azure SQL DB для использования. Если у вас нет учетной записи Azure, вы можете создать его бесплатно, которая также будет включать бесплатный уровень Azure SQL DB:
https://azure.microsoft.com/en-us/free/free-account-faq/
Чтобы создать новую базу данных, следуйте инструкциям здесь:
Создать базу данных Azure SQL
Или, если вам уже удобно с Azure CLI, вы можете просто выполнить (используя Bash, через WSL, среду Linux или облачный оболочка Azure)
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 SQL с Azure Data Studio, это быстрое видео поможет вам:
Как подключиться к базе данных Azure SQL из Azure Data Studio
После создания базы данных вам необходимо включить отслеживание изменений и добавить хранимую процедуру, которая будет вызвана из .net. Код SQL доступен здесь:
./SQL/01-change-tracking-setup.sql./SQL/02-stored-procedure.sqlПожалуйста, выполните скрипт в созданной базе данных в последовательности.
Если вам нужна помощь в выполнении сценария SQL, вы можете найти QuickStart здесь: QuickStart: Используйте Azure Data Studio для подключения и запроса базы данных Azure SQL
Убедитесь, что на вашем компьютере установлено .NET CORE 3.0 SDK. Клонировать это репо в каталоге на нашем компьютере, а затем настройте строку подключения в appsettings.json .
Если вы не хотите сохранять строку подключения в файле appsettings.json по соображениям безопасности, вы можете просто установить ее, используя переменную среды:
Linux:
export ConnectionStrings__DefaultConnection= " <your-connection-string> "Windows:
$ 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> на правильные значения для вашей среды.
Чтобы запустить и проверить API REST, просто запустите
dotnet run.NET запустит HTTP -сервер, и когда все будет запущено, вы увидите что -то вроде
Now listening on: https://localhost:5001
Используя клиент REST (например, Visual Studio, Insomnia, Curl или PowerShell's Invoke-Restmethod)), вы можете позвонить в свой 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, как описано в следующем разделе.
Теперь, когда ваше решение для API REST готово, пришло время развернуть его на Azure, чтобы любой мог воспользоваться этим. Подробная статья о том, как вы можете, что это здесь:
Единственное, что вы делаете в дополнение к тому, что объяснялось в приведенных выше статьях, - это добавить строку подключения к конфигурации веб -приложения Azure. Использование 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 , как также установлено, как упомянуто в разделе «Запустите образец локально».
Пример полного сценария, который развертывает API REST, доступен здесь: azure-deploy.sh . Скрипт нуждается и .env -файл для запуска. Если нет, это создаст для вас пустой. Убедитесь, что вы заполните его правильными значениями для вашей среды, и вам будет хорошо.
Файл .env выглядит следующим образом:
ResourceGroup="<resource-group-name>"
AppName="<app-name>"
Location="WestUS2"
ConnectionStrings__DefaultConnection="<the-connection-string>"
Если вы новичок в .NET и хотите узнать больше, на платформе Microsoft Learn доступно много учебных пособий. Вы можете начать отсюда, например:
Если вы также хотите узнать больше о коде Visual Studio, вот еще один ресурс:
Использование ядра .NET в коде Visual Studio
Этот проект приветствует вклады и предложения. Большинство взносов требуют, чтобы вы согласились с лицензионным соглашением о участнике (CLA), заявив, что вы имеете право и фактически предоставить нам права на использование вашего вклада. Для получения подробной информации, посетите https://cla.opensource.microsoft.com.
Когда вы отправляете запрос на привлечение, бот CLA автоматически определит, нужно ли вам предоставить CLA и правильно украсить PR (например, проверка состояния, комментарий). Просто следуйте инструкциям, предоставленным ботом. Вам нужно будет сделать это только один раз во всех репо, используя наш CLA.
Этот проект принял код поведения с открытым исходным кодом Microsoft. Для получения дополнительной информации см. Кодекс поведения FAQ или свяжитесь с [email protected] с любыми дополнительными вопросами или комментариями.