| page_type | lenguas | productos | descripción | urlfragment | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
muestra |
|
| Uso de la API de seguimiento de cambios para sincronizar datos entre aplicaciones y la nube | azure-sql-db-dotnet-rest-api |
Si está desarrollando una aplicación que debe poder funcionar desconectada de la nube, seguramente necesitará, en algún momento, implementar la capacidad de descargar los datos más recientes de la nube para actualizar los datos locales en la aplicación. Hacer esto de manera eficiente podría ser complicado, ya que necesitaría comprender cuáles son los cambios que ocurrieron en la nube desde la última vez que la aplicación se sincronizó con ella, para que solo pueda enviar las diferencias.
Con Azure SQL, puede aprovechar el seguimiento de cambios para detectar qué filas se han cambiado desde la última vez que la aplicación se sincronizó y genera una carga útil que solo contiene esos cambios. Algo así:
{
"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
}
]
}Bueno, más precisamente, no solo puede detectar los cambios, sino que también puede generar el JSON directamente desde Azure SQL, para que pueda aprovechar la sorprendente integración que Azure SQL proporciona en todas sus características y crear un código maravillosamente simple.
Hay más detalles técnicos disponibles aquí: Sync aplicaciones móviles con Azure utilizando la API de seguimiento de cambios
También preparé un video para mostrar en 10 minutos cuánto más simple puede ser su vida utilizando la API de seguimiento de cambios.
] (https://www.youtube.com/watch?v=c1bmnruu6wc)
Asegúrese de tener una base de datos Azure SQL DB para usar. Si no tiene una cuenta de Azure, puede crear uno gratis que también incluirá un nivel de DB de Azure SQL gratuito:
https://azure.microsoft.com/en-us/free/free-account-faq/
Para crear una nueva base de datos, siga las instrucciones aquí:
Crear base de datos Azure SQL
O, si ya se siente cómodo con Azure CLI, simplemente puede ejecutar (usando Bash, a través de WSL, un entorno de Linux o Shell de Cloud 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_2Una vez que se crea la base de datos, puede conectarse a ella utilizando Azure Data Studio. Si necesita ayuda para configurar su primera conexión con Azure SQL con Azure Data Studio, este video rápido lo ayudará:
Cómo conectarse a la base de datos de Azure SQL de Azure Data Studio
Una vez que se ha creado la base de datos, debe habilitar el seguimiento de cambios y agregar un procedimiento almacenado que llamará desde .NET. El código SQL está disponible aquí:
./SQL/01-change-tracking-setup.sql./SQL/02-stored-procedure.sqlEjecute el script en la base de datos creada en secuencia.
Si necesita alguna ayuda para ejecutar el script SQL, puede encontrar un inicio rápido aquí: QuickStart: Use Azure Data Studio para conectar y consultar la base de datos de Azure SQL
Asegúrese de tener instalado .NET Core 3.0 SDK en su máquina. Clone este repositorio en un directorio en nuestra computadora y luego configure la cadena de conexión en appsettings.json .
Si no desea guardar la cadena de conexión en el archivo appsettings.json por razones de seguridad, puede configurarla utilizando una variable de entorno:
Linux:
export ConnectionStrings__DefaultConnection= " <your-connection-string> "Windows:
$ Env: ConnectionStrings__DefaultConnection = " <your-connection-string> "Tu cadena de conexión es algo así como:
SERVER=<your-server-name>.database.windows.net;DATABASE=<your-database-name>;UID=DotNetWebApp;PWD=a987REALLY#$%TRONGpa44w0rd!
Simplemente reemplace <your-server-name> y <your-database-name> con los valores correctos para su entorno.
Para ejecutar y probar la API REST localmente, simplemente ejecute
dotnet run.NET iniciará el servidor HTTP y cuando todo esté en funcionamiento verá algo como
Now listening on: https://localhost:5001
Usando un cliente REST (como Visual Studio, Insomnia, Curl o Powershell's Invoke-Restmethod)), ahora puede llamar a su API, por ejemplo:
curl -s -k -H " fromVersion: 0 " --url https://localhost:5001/trainingsession/syncY obtendrás algo como lo siguiente:
{
"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
}
]
} La depuración del código Visual Studio es totalmente compatible. Si tiene un .env , se usará para obtener la cadena de conexión: esto significa que, como mínimo, el archivo .env debe ser como lo siguiente:
ConnectionStrings__DefaultConnection="<the-connection-string>"
El archivo .env también se usa para leer los valores necesarios para implementar la solución a Azure, como se describe en la siguiente sección.
Ahora que su solución REST API está lista, es hora de implementarla en Azure para que cualquiera pueda aprovecharla. Un artículo detallado sobre cómo puede que eso esté aquí:
Lo único que ha hecho además de lo que se explica en los artículos anteriores es agregar la cadena de conexión a la configuración de la aplicación web de Azure. Usando AZ CLI, por ejemplo:
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 Solo asegúrese de establecer correctamente $AppName y $ResourceGroup para que coincida con su entorno y también que la variable $ConnectionStrings__DefaultConnection , como también se establece, como se menciona en la sección "Ejecutar la muestra localmente".
Un ejemplo de un script completo que implementa la API REST está disponible aquí: azure-deploy.sh . La necesidad del script y el archivo .env para ejecutarse. Si no hay ninguno, creará uno vacío para usted. Asegúrese de llenarlo con los valores correctos para su entorno, y estará listo para comenzar.
El archivo .env se parece al siguiente:
ResourceGroup="<resource-group-name>"
AppName="<app-name>"
Location="WestUS2"
ConnectionStrings__DefaultConnection="<the-connection-string>"
Si eres nuevo en .NET y quieres aprender más, hay muchos tutoriales disponibles en la plataforma Microsoft Learn. Puede comenzar desde aquí, por ejemplo:
Si también desea obtener más información sobre Visual Studio Code, aquí hay otro recurso:
Uso de .NET Core en el código Visual Studio
Este proyecto da la bienvenida a las contribuciones y sugerencias. La mayoría de las contribuciones requieren que acepte un Acuerdo de Licencia de Contributor (CLA) que declare que tiene derecho y realmente hacernos los derechos para utilizar su contribución. Para más detalles, visite https://cla.opensource.microsoft.com.
Cuando envíe una solicitud de extracción, un BOT CLA determinará automáticamente si necesita proporcionar un CLA y decorar el PR adecuadamente (por ejemplo, verificación de estado, comentario). Simplemente siga las instrucciones proporcionadas por el bot. Solo necesitará hacer esto una vez en todos los reposos usando nuestro CLA.
Este proyecto ha adoptado el Código de Conducta Open Open Microsoft. Para obtener más información, consulte el Código de Conducta Preguntas frecuentes o comuníquese con [email protected] con cualquier pregunta o comentario adicional.