Creación de su primera función perdurable en C#

Durable Functions es una extensión de Azure Functions que le permite escribir funciones con estado en un entorno sin servidor. La extensión administra el estado, establece puntos de control y reinicia en su nombre.

En este artículo aprenderá a usar Visual Studio Code con el fin de crear y probar localmente una función perdurable "Hola mundo". Esta función se encarga de organizar y encadenar llamadas a otras funciones. Después, podrá publicar el código de función en Azure. Estas herramientas están disponibles como parte de la extensión de Azure Functions de Visual Studio Code.

Captura de pantalla de la ventana de Visual Studio Code con una función duradera.

Requisitos previos

Para completar este tutorial:

Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.

Creación del proyecto local

En esta sección se usa Visual Studio Code para crear un proyecto local en Azure Functions.

  1. En Visual Studio Code, presione la tecla F1 (o Ctrl/Cmd+Mayús+P) para abrir la paleta de comandos. En la paleta de comandos, busque y seleccione Azure Functions: Create New Project....

    Captura de pantalla de la ventana de creación de un proyecto de función.

  2. Elija una ubicación de carpeta vacía para el proyecto y elija Seleccionar.

  3. Siga las solicitudes y proporcione la siguiente información:

    Prompt Valor Descripción
    Seleccionar el lenguaje para el proyecto de la aplicación de funciones C# Cree un proyecto local de Functions en C#.
    Selección de una versión Azure Functions v4 Esta opción solo se ve si las herramientas principales no estén instaladas. En este caso, las herramientas principales se instalan la primera vez que se ejecuta la aplicación.
    Seleccionar una plantilla para la primera función de su proyecto Omitir por ahora
    Seleccionar cómo desea que se abra el proyecto Abrir en la ventana actual Al elegir este valor, Visual Studio Code volverá a abrirse en la carpeta que seleccionó.

Visual Studio Code instalará el conjunto de herramientas Azure Functions Core Tools si este fuera necesario. También crea el proyecto de una aplicación de funciones en una carpeta. Este proyecto contiene los archivos de configuración host.json y local.settings.json.

Incorporación de funciones a la aplicación

En los pasos siguientes se usa una plantilla para crear el código de Durable Functions en el proyecto.

  1. En la paleta de comandos, busque y seleccione Azure Functions: Create Function....

  2. Siga las solicitudes y proporcione la siguiente información:

    Prompt Valor Descripción
    Seleccionar una plantilla para la función DurableFunctionsOrchestration Crear una orquestación de Durable Functions
    Proporcionar un nombre de función HelloOrchestration Nombre de la clase en la que se crean las funciones
    Proporcionar un espacio de nombres Company.Function Espacio de nombres de la clase generada
  3. Cuando Visual Studio Code le pida que seleccione una cuenta de almacenamiento, seleccione Seleccionar cuenta de almacenamiento. Siga las indicaciones y proporcione la siguiente información para crear una nueva cuenta de almacenamiento en Azure:

    Prompt Valor Descripción
    Seleccionar suscripción nombre de la suscripción Selección de su suscripción a Azure
    Seleccione una cuenta de almacenamiento Creación de una cuenta de almacenamiento nueva
    Escriba el nombre de la nueva cuenta de almacenamiento nombre único Nombre de la cuenta de almacenamiento que se creará
    Selección de un grupo de recursos nombre único Nombre del grupo de recursos que se creará
    Seleccionar una ubicación region Seleccione una región cercana

Se agrega al proyecto una clase que contiene las funciones nuevas. Visual Studio Code también agregará la cadena de conexión de la cuenta de almacenamiento al archivo local.settings.json, además de una referencia al paquete NuGet Microsoft.Azure.WebJobs.Extensions.DurableTask al archivo de proyecto .csproj.

Abra el nuevo archivo HelloOrchestration.cs para ver el contenido. Esta función Durable Functions es un ejemplo de una función sencilla de encadenamiento con los métodos siguientes:

Método FunctionName Descripción
RunOrchestrator HelloOrchestration Administra la orquestación de Durable Functions. En este caso, la orquestación se inicia, crea una lista y le agrega el resultado de tres llamadas a funciones. Una vez completadas las tres llamadas a funciones, devuelve la lista.
SayHello HelloOrchestration_Hello Por ejemplo, la función devuelve un saludo. Esta es la función que contiene la lógica de negocios que se va a organizar.
HttpStart HelloOrchestration_HttpStart Una función desencadenada por HTTP que inicia una instancia de la orquestación y devuelve una respuesta de comprobación de estado.

Ahora que ha creado un proyecto de función y una función durable, puede probarla en el equipo local.

Prueba local de la función

Azure Functions Core Tools le permite ejecutar un proyecto de Azure Functions en el equipo de desarrollo local. Se le solicita que instale estas herramientas la primera vez que inicie una función de Visual Studio Code.

  1. Para probar la función, establezca un punto de interrupción en el código de la función de la actividad SayHello y presione la tecla F5 para iniciar el proyecto de la aplicación de funciones. La salida de Core Tools aparece en el panel Terminal.

    Nota

    Para más información sobre los procesos de depuración, consulte los Diagnósticos de Durable Functions.

  2. En el panel Terminal, copie el punto de conexión de la dirección URL de la función desencadenada por HTTP.

    Captura de pantalla de la ventana de salida local de Azure.

  3. Utilice una herramienta como Postman o cURL y, después, envíe una solicitud HTTP POST al punto de conexión de la dirección URL.

    La respuesta que obtendrá será el resultado inicial de la función HTTP, que nos informa de que la orquestación duradera se ha iniciado correctamente. No obstante, este no es el resultado final de la tarea de orquestación. La respuesta incluye algunas direcciones URL útiles. De momento, vamos a consultar el estado de la orquestación.

  4. Copie el valor de la URL que corresponde a statusQueryGetUri, péguelo en la barra de direcciones del explorador y ejecute la solicitud. Como alternativa, también puede usar Postman para emitir la solicitud GET.

    La solicitud consultará la instancia de orquestación sobre el estado. Después de un tiempo, obtendrá una respuesta que mostrará que la instancia se ha completado e incluirá las salidas o los resultados de la función duradera. Su aspecto es similar a:

    {
        "name": "HelloOrchestration",
        "instanceId": "9a528a9e926f4b46b7d3deaa134b7e8a",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2020-03-18T21:54:49Z",
        "lastUpdatedTime": "2020-03-18T21:54:54Z"
    }
    
  5. Para detener el proceso de depuración, presione las teclas Mayús + F5 en Visual Studio Code.

Después de comprobar que la función se ejecuta correctamente en el equipo local es el momento de publicar el proyecto en Azure.

Inicio de sesión en Azure

Para poder crear recursos de Azure o publicar la aplicación, debe iniciar sesión en Azure.

  1. Si aún no ha iniciado sesión, elija el icono de Azure en la barra de actividades. Después, en el área Recursos, elija Iniciar sesión en Azure...

    Captura de pantalla del inicio de sesión en la ventana de Azure dentro de VS Code.

    Si ya ha iniciado sesión y puede ver las suscripciones existentes, vaya a la siguiente sección. Si aún no tiene una cuenta de Azure, elija Crear una cuenta de Azure.... Los estudiantes pueden elegir Crear una cuenta de Microsoft Azure for Students....

  2. Cuando se le solicite en el explorador, elija su cuenta de Azure e inicie sesión con las credenciales de la misma. Si opta por crear una cuenta, podrá iniciar sesión una vez que haya completado el proceso de creación.

  3. Cuando haya iniciado sesión correctamente, puede cerrar la nueva ventana del explorador. Las suscripciones que pertenezcan a la cuenta de Azure se mostrarán en la barra lateral.

Cree la aplicación de funciones en Azure

Durante el transcurso de esta sección, podrá crear una aplicación de funciones y los recursos relacionados con esta en la suscripción de Azure.

  1. Seleccione el icono de Azure en la barra de actividades. A continuación, en el área Recursos, seleccione el icono + y elija la opción Crear aplicación de funciones en Azure.

    Creación de un recurso en la suscripción de Azure

  2. Escriba la siguiente información cuando se le indique:

    Prompt Número de selección
    Seleccionar suscripción elija la suscripción que desee usar. Si solo tiene una suscripción visible en el área Recursos, esta solicitud no se mostrará.
    Escribir un nombre único global para la aplicación de funciones Escriba un nombre que sea válido en una ruta de acceso de la dirección URL. El nombre que escriba se valida para asegurarse de que es único en Azure Functions.
    Seleccione una pila en tiempo de ejecución Elija la versión de lenguaje que ha estado ejecutando localmente.
    Seleccionar una ubicación para los nuevos recursos Para mejorar el rendimiento, elija una región cerca de usted.

    La extensión mostrará el estado de los recursos individuales en el panel Azure: Registro de actividad a medida que estos se creen.

    Registro de creación de recursos de Azure

  3. Cuando se complete el proceso de creación, se crearán los siguientes recursos de Azure en la suscripción. Los recursos se denominarán en función del nombre de la aplicación de funciones:

    • Un grupo de recursos, que es un contenedor lógico de recursos relacionados.
    • Una cuenta de Azure Storage estándar, que mantiene información de estado y de otro tipo sobre los proyectos.
    • Una aplicación de funciones, que proporciona el entorno para ejecutar el código de función. Una aplicación de funciones permite agrupar funciones como una unidad lógica para facilitar la administración, la implementación y el uso compartido de recursos en el mismo plan de hospedaje.
    • Un plan de App Service, que define al host subyacente de la aplicación de funciones.
    • Una instancia de Application Insights conectada a la aplicación de funciones, que hace un seguimiento del uso de las funciones de la aplicación.

    Una vez que se haya creado la aplicación de función se mostrará una notificación y se aplicará el paquete de implementación.

    Sugerencia

    De forma predeterminada, los recursos de Azure que requiere la aplicación de funciones se crean según el nombre de la aplicación de funciones que proporcione. De forma predeterminada, estos también se crean en el mismo nuevo grupo de recursos que contiene la aplicación de funciones. Si lo que quiere es personalizar los nombres de estos recursos o reutilizar recursos existentes, deberá publicar el proyecto con opciones de creación avanzadas.

Implementar el proyecto en Azure

Importante

Los procesos de implementación en aplicaciones de funciones existentes siempre sobrescriben el contenido de esas aplicaciones en Azure.

  1. En el área Recursos de la actividad de Azure, busque el recurso de la aplicación de funciones que acaba de crear, haga clic con el botón derecho en el recurso y seleccione Implementar en la aplicación de funciones....

  2. Cuando se le solicite sobrescribir las implementaciones anteriores, seleccione Implementar para implementar el código de función en el nuevo recurso de aplicación de funciones.

  3. Cuando se complete el proceso de implementación, seleccione Ver salida para visualizar los resultados de la creación y la implementación, incluidos los recursos de Azure que ha creado. Si se pierde la notificación, seleccione el icono de campana en la esquina inferior derecha para verlo de nuevo.

    Captura de pantalla de la vista de la ventana de salida.

Prueba de una función en Azure

  1. Copie la dirección URL del desencadenador HTTP del panel Salida. La URL que llama a la función desencadenada mediante HTTP debe tener el siguiente formato:

    https://<functionappname>.azurewebsites.net/api/HelloOrchestration_HttpStart

  2. Pegue la dirección URL de la solicitud HTTP en la barra de direcciones del explorador. Cuando use la aplicación publicada, deberá obtener la misma respuesta de estado que obtuvo antes.

Pasos siguientes

Ha usado Visual Studio Code para crear y publicar una aplicación de función perdurable con C#.

En este artículo, aprenderá a usar Visual Studio 2022 con el fin de crear y probar localmente una función durable "Hola mundo". Esta función organiza y encadena llamadas a otras funciones. Luego, publicará el código de función en Azure. Estas herramientas están disponibles como parte de la carga de trabajo de desarrollo de Azure en Visual Studio 2022.

Captura de pantalla de la ventana de Visual Studio 2019 con una función duradera.

Requisitos previos

Para completar este tutorial:

  • Instale Visual Studio 2022. Asegúrese de que la carga de trabajo de Desarrollo de Azure también está instalada. Visual Studio 2019 también admite el desarrollo de Durable Functions, pero la interfaz de usuario y los pasos son distintos.

  • Compruebe que el Emulador de Azurite está instalado y ejecutándose.

Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.

Creación de un proyecto de aplicación de función

La plantilla de Azure Functions crea un proyecto que se puede publicar en una aplicación de función en Azure. Una aplicación de función permite agrupar funciones como una unidad lógica para facilitar la administración, la implementación, el escalado y el uso compartido de recursos.

  1. En Visual Studio, seleccione Nuevo>proyecto en el menú Archivo.

  2. En el cuadro de diálogo Crear un proyecto, busque functions. A continuación, elija la plantilla de Azure Functions y seleccione Siguiente.

    Captura de pantalla del diálogo de nuevo proyecto para crear una función en Visual Studio.

  3. Introduzca un Nombre de proyecto y seleccione el botón Aceptar. El nombre de proyecto debe ser válido como espacio de nombres de C#, por lo que no deberá usar guiones bajos, guiones o caracteres no alfanuméricos.

  4. En Información adicional, use la configuración especificada en la tabla que aparece después de la imagen.

    Captura de pantalla del diálogo de creación de una nueva aplicación de Azure Functions en Visual Studio.

    Configuración Valor sugerido Descripción
    Trabajo de Functions .NET 6 Crea un proyecto de función que admite .NET 6 y Azure Functions Runtime 4.0. Para más información, consulte Cómo seleccionar un destino para versiones en tiempo de ejecución de Azure Functions.
    Function Vacío De esta forma se crea una aplicación de función vacía.
    Cuenta de almacenamiento Emulador de Storage Es necesaria una cuenta de almacenamiento para la administración del estado de función durable.
  5. Haga clic en Crear para crear un proyecto de función vacío. Este proyecto tiene los archivos de configuración básica necesarios para ejecutar las funciones.

Incorporación de funciones a la aplicación

En los pasos siguientes se usa una plantilla para crear el código de Durable Functions en el proyecto.

  1. Haga clic con el botón derecho en el proyecto en Visual Studio y seleccione Agregar>Nueva función de Azure.

    Captura de pantalla de la función Agregar nuevo.

  2. Compruebe que el elemento Función de Azure esté seleccionado en el menú Agregar. Después, escriba un nombre para el archivo C# y seleccione el botón Agregar.

  3. Seleccione la plantilla Orquestación de Durable Functions y seleccione Agregar.

    Captura de pantalla de la plantilla Select durable.

Una nueva función Durable Functions se agregará a la aplicación. Abra el nuevo archivo .cs para visualizar su contenido. Esta función Durable Functions es un ejemplo de una función sencilla de encadenamiento con los métodos siguientes:

Método FunctionName Descripción
RunOrchestrator <file-name> Administra la orquestación de Durable Functions. En este caso, la orquestación se inicia, crea una lista y le agrega el resultado de tres llamadas a funciones. Una vez completadas las tres llamadas a funciones, devuelve la lista.
SayHello <file-name>_Hello Por ejemplo, la función devuelve un saludo. Esta es la función que contiene la lógica de negocios que se va a organizar.
HttpStart <file-name>_HttpStart Una función desencadenada por HTTP que inicia una instancia de la orquestación y devuelve una respuesta de comprobación de estado.

Ahora que ha creado un proyecto de función y una función duradera, puede probarla en el equipo local.

Prueba local de la función

Azure Functions Core Tools le permite ejecutar un proyecto de Azure Functions en el equipo de desarrollo local. La primera vez que inicie una función desde Visual Studio Code se le solicitará que instale estas herramientas.

  1. Para probar la función, presione F5. Si se le solicita, acepte la solicitud de Visual Studio para descargar e instalar las herramientas de Azure Functions Core (CLI). También es preciso que habilite una excepción de firewall para que las herramientas para controlen las solicitudes de HTTP.

  2. Copie la dirección URL de la función de los resultados del runtime de Azure Functions.

    Captura de pantalla del tiempo de ejecución local de Azure.

  3. Pegue la dirección URL de la solicitud HTTP en la barra de direcciones del explorador y ejecútela. A continuación se muestra la respuesta en el explorador para la solicitud GET local devuelta por la función:

    Captura de pantalla de la ventana del navegador con statusQueryGetUri llamado.

    La respuesta que obtendrá será el resultado inicial de la función HTTP, que nos informa de que la orquestación duradera se ha iniciado correctamente. No obstante, este no es el resultado final de la tarea de orquestación. La respuesta incluye algunas direcciones URL útiles. De momento, vamos a consultar el estado de la orquestación.

  4. Copie el valor de la URL que corresponde a statusQueryGetUri, péguelo en la barra de direcciones del explorador y ejecute la solicitud.

    La solicitud consultará la instancia de orquestación sobre el estado. Después de un tiempo, debe obtener una respuesta similar a la siguiente. Esta salida nos muestra que la instancia se ha completado e incluye las salidas o resultados de la función duradera.

    {
        "name": "Durable",
        "instanceId": "d495cb0ac10d4e13b22729c37e335190",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2019-11-02T07:07:40Z",
        "lastUpdatedTime": "2019-11-02T07:07:52Z"
    }
    
  5. Para detener la depuración, presione Mayús + F5.

Después de comprobar que la función se ejecuta correctamente en el equipo local es el momento de publicar el proyecto en Azure.

Publicar el proyecto en Azure

Para publicar el proyecto, deberá tener una aplicación de funciones ubicada en la suscripción de Azure. Las aplicaciones de función se pueden crear directamente desde Visual Studio.

  1. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto y seleccione Publicar. En Destino, seleccione Azure y, luego, Siguiente.

    Captura de pantalla de las ventana de publicación.

  2. Seleccione la opción Aplicación de funciones de Azure (Windows) en la pestaña Destino específico. Esta opción creará una aplicación de funciones que se ejecutará en Windows. Después, seleccione el botón Siguiente.

    Captura de pantalla de las ventana de publicación con un objetivo concreto.

  3. En Instancia de la función, seleccione Crear una aplicación de Azure Functions...

    Captura de pantalla de la creación de una instancia de la aplicación de funciones.

  4. Crear una nueva instancia con los valores especificados en la tabla siguiente:

    Configuración valor Descripción
    Nombre Nombre único globalmente Nombre que identifica de forma única la nueva aplicación de función. Acepte este nombre o escriba uno nuevo. Los caracteres válidos son a-z, 0-9 y -.
    Suscripción Su suscripción La suscripción de Azure que se va a usar. Acepte esta suscripción o seleccione una nueva en la lista desplegable.
    Grupo de recursos Nombre del grupo de recursos Nombre del grupo de recursos en el que quiere crear la aplicación de funciones. Seleccione Nuevo para crear un nuevo grupo de recursos. También puede elegir un grupo de recursos existente en la lista desplegable.
    Tipo de plan Consumo Cuando publique el proyecto en una aplicación de funciones que se ejecute en un plan Consumo, solo pagará por las ejecuciones de la aplicación. Otros planes de hospedaje suponen costos más elevados.
    Ubicación Ubicación de la instancia de App Service Elija una ubicación en una región próxima a usted o a otros servicios a los que las funciones accedan.
    Azure Storage Cuenta de almacenamiento de uso general El runtime de Functions necesita una cuenta de almacenamiento de Azure. Seleccione Nueva para configurar una cuenta de almacenamiento de uso general. También puede elegir una cuenta existente que cumpla los requisitos de la cuenta de almacenamiento.
    Application Insights Instancia de Application Insights Debe habilitar la integración de Application Insights para la aplicación de funciones. Seleccione Nuevo para crear una nueva instancia, ya sea en un área de trabajo de Log Analytics nueva o en una existente. También puede elegir una cuenta existente.

    Captura de pantalla del cuadro de diálogo Crear App Service.

  5. Seleccione Crear para crear una aplicación de funciones y sus recursos relacionados en Azure. El estado de la creación del recurso se muestra en la parte inferior izquierda de la ventana.

  6. En la instancia de Functions, asegúrese de que Ejecutar desde el archivo de paquete esté activado. La aplicación de funciones se implementa con la implementación de un archivo zip y con el modo de ejecución desde el paquete habilitado. La implementación de archivo ZIP es el método de implementación recomendado para el proyecto de Functions, ya que se obtiene un mejor rendimiento.

    Captura de pantalla de finalización de la creación de un perfil.

  7. Seleccione Finalizary, en la página Publicar, seleccione Publicar para implementar el paquete que contiene los archivos de proyecto en la nueva aplicación de funciones en Azure.

    Una vez finalizada la implementación, en la pestaña Publicar aparecerá la dirección URL raíz de la aplicación de funciones de Azure.

  8. En la pestaña Publicar, en la sección Hospedaje, elija Abrir en Azure Portal. Esto abre el recurso de Azure de aplicación de funciones nuevo en Azure Portal.

    Captura de pantalla de publicación del mensaje de éxito.

Prueba de una función en Azure

  1. Copie la URL base de la aplicación de función de la página de perfil de publicación. Reemplace la parte localhost:port de la dirección URL que usó al probar la función localmente por la nueva URL base.

    La URL que llama al desencadenador HTTP de la función duradera deberá tener el siguiente formato:

    https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>_HttpStart

  2. Pegue la dirección URL de la solicitud HTTP en la barra de direcciones del explorador. Cuando use la aplicación publicada, deberá obtener la misma respuesta de estado que obtuvo antes.

Pasos siguientes

Ha usado Visual Studio para crear y publicar una aplicación de función durable con C#.