Inicio rápido: Creación de la primera función de C# en Azure mediante Visual Studio

Con Azure Functions puede usar Visual Studio para crear proyectos de funciones locales de C# y, a continuación, publicar fácilmente dichos proyectos para ejecutarlos en un entorno que se puede escalar sin servidor en Azure. Por otro lado, si prefiere desarrollar las aplicaciones de C# de forma local mediante Visual Studio Code, debe tener en cuenta la versión basada en Visual Studio Code de este artículo.

De forma predeterminada, en este artículo se muestra cómo crear funciones de C# que se ejecutan en .NET 6 en el mismo proceso que el host de Functions. Estas funciones de C# en proceso solo se admiten en las versiones de compatibilidad a largo plazo (LTS) de .NET, como .NET 6. Al crear el proyecto, puede optar por crear una función que se ejecute en .NET 6 en un proceso de trabajo aislado. El proceso de trabajo aislado admite las versiones de LTS y Soporte técnico de términos Estándar (STS) de .NET. Para más información, consulte Versiones admitidas en la guía del proceso de trabajo aislado de funciones de .NET.

En este artículo aprenderá a:

  • Use Visual Studio para crear un proyecto de biblioteca de clases de C#.
  • Cree una función que responda a solicitudes HTTP.
  • Ejecute el código localmente para comprobar el comportamiento de la función.
  • Implemente el proyecto de código en Azure Functions.

Este inicio rápido supone un pequeño costo en su cuenta de Azure.

Requisitos previos

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

La plantilla del proyecto de Azure Functions de Visual Studio crea un proyecto de biblioteca de clases de C# que puede publicar en una aplicación de funciones en Azure. Una aplicación de funciones 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 el menú de Visual Studio, seleccione Archivo>Nuevo>Proyecto.

  2. En Crear un proyecto, escriba functions en el cuadro de búsqueda, elija la plantilla Azure Functions y seleccione Siguiente.

  3. En Configurar el nuevo proyecto, escriba un nombre de proyecto para el proyecto y, a continuación, seleccione Siguiente. El nombre de la aplicación de función debe ser válido como espacio de nombres de C#, por lo que no debe usar guiones bajos, guiones u otros caracteres no alfanuméricos.

  4. En Información adicional, elija una de las siguientes opciones para el trabajo de Functions:

    Entorno de ejecución de .NET Modelo de proceso Descripción
    .NET 6.0 (compatibilidad a largo plazo) En proceso Las funciones de C# en proceso solo se admiten en las versiones de compatibilidad a largo plazo (LTS) de .NET. El código de función se ejecuta en el mismo proceso que el host de Functions.
    .NET 6.0 aislado (compatibilidad a largo plazo) Proceso de trabajo aislado Las funciones se ejecutan en .NET 6, pero en un proceso independiente del host de Functions.
    .NET 7.0 aislado Proceso de trabajo aislado Dado que .NET 7 no es una versión LTS de .NET, las funciones deben ejecutarse en un proceso aislado en .NET 7.
    .NET Framework aislado v4 Proceso de trabajo aislado Elija esta opción cuando las funciones tengan que usar bibliotecas solo compatibles con .NET Framework.
    .NET Core 3.1 (compatibilidad a largo plazo) En proceso .NET Core 3.1 ya no es una versión compatible de .NET y no es compatible con la versión 4.x de Functions. En su lugar, use .NET 6.0.
    .NET Framework v1 En proceso Elija esta opción cuando las funciones tengan que usar bibliotecas solo compatibles con versiones anteriores de .NET Framework. Requiere la versión 1.x del runtime de Functions.

    Los dos modelos de proceso usan diferentes API y cada modelo de proceso usa una plantilla diferente al generar el código del proyecto de función. Si no ve opciones para .NET 6.0 y versiones posteriores del entorno de ejecución de .NET, es posible que tenga que actualizar la instalación de las herramientas de Azure Functions.

  5. Para las opciones restantes de Información adicional, use los valores de la tabla siguiente:

    Configuración Value Descripción
    Function desencadenador HTTP Este valor crea una función desencadenada por una solicitud HTTP.
    Usar Azurita para la cuenta de almacenamiento de runtime (AzureWebJobsStorage) Habilitar Dado que una aplicación de funciones de Azure necesita una cuenta de almacenamiento, se asigna o se crea una cuando publica su proyecto en Azure. Un desencadenador HTTP no utiliza una cadena de conexión de cuenta de Azure Storage; todos los demás tipos de desencadenador requieren una cadena de conexión de cuenta de Azure Storage válida. Al seleccionar esta opción, se usa el emulador Azurite.
    Nivel de autorización Anónimo Cualquier cliente puede desencadenar una función creada sin tener que proporcionar una clave. Esta configuración de autorización facilita probar la función nueva. Para más información sobre las claves y la autorización, consulte Claves de autorización e Introducción a los enlaces y desencadenadores HTTP de Azure Functions.

    Captura de pantalla de la configuración de un proyecto de Azure Functions.

    Asegúrese de establecer el Nivel de autorización en Anónimo. Al elegir el nivel predeterminado de Función, tiene que presentar la tecla de función en las solicitudes para acceder al punto de conexión de la función en Azure.

  6. Seleccione Crear para crear el proyecto de función y la función con desencadenador HTTP.

Visual Studio crea un proyecto y una clase que contiene código reutilizable para el tipo de función de desencadenador HTTP. El código reutilizable envía una respuesta HTTP que incluye un valor del cuerpo de la solicitud o de la cadena de consulta. El atributo HttpTrigger especifica que la función es desencadenada por una solicitud HTTP.

Cambio del nombre de la función

El atributo del método FunctionName establece el nombre de la función que, de forma predeterminada, se genera como Function1. Como las herramientas no le permiten reemplazar el nombre de la función predeterminada al crear un proyecto, dedique un minuto a crear un nombre mejor para la clase, el archivo y los metadatos de la función.

  1. En el Explorador de archivos, haga clic con el botón derecho en el archivo Function1.cs y cambie su nombre a HttpExample.cs.

  2. En el código, cambie el nombre de la clase Function1 a HttpExample.

  3. En el método HttpTrigger denominado Run, cambie el nombre del atributo del método FunctionName a HttpExample.

La definición de la función ahora debe parecerse al código siguiente:

[FunctionName("HttpExample")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
    ILogger log)

Ahora que ha cambiado el nombre de la función, puede probarla en el equipo local.

Ejecución local de la función

Visual Studio se integra con Azure Functions Core Tools; de este modo puede probar las funciones localmente mediante el sistema en tiempo de ejecución completo de Azure Functions.

  1. Para ejecutar la función, presione F5 en Visual Studio. Es preciso habilitar una excepción de firewall para que las herramientas para controlen las solicitudes de HTTP. Los niveles de autorización nunca se aplican cuando se ejecuta una función localmente.

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

    Runtime local de Azure

  3. Pegue la dirección URL de la solicitud HTTP en la barra de direcciones del explorador. Agregue la cadena de consulta ?name=<YOUR_NAME> a esta dirección URL y ejecute la solicitud. La siguiente imagen muestra la respuesta en el explorador para la solicitud GET local devuelta por la función:

    Respuesta de localhost de la función en el explorador

  4. Para detener la depuración, presione Mayús+F5 en Visual Studio.

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

Visual Studio puede publicar el proyecto local en Azure. Para poder publicar el proyecto, debe tener una aplicación de funciones en la suscripción de Azure. Si aún no tiene una aplicación de funciones en Azure, la publicación de Visual Studio crea una la primera vez que se publica el proyecto. En este artículo aprenderá a crear una aplicación de funciones y los recursos relacionados con Azure.

  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 Value 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 un grupo de recursos existente en la lista desplegable o la opción Nuevo para crear un nuevo grupo de recursos.
    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.

    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.

Comprobación de la función en Azure

  1. En Cloud Explorer, se debe seleccionar la nueva aplicación de funciones. Si no es así, expanda su suscripción >App Services y seleccione la nueva aplicación de funciones.

  2. Haga clic con el botón derecho en la aplicación de funciones y elija Abrir en explorador. Se abre la raíz de su aplicación de funciones en el explorador web predeterminado y muestra la página que indica que su aplicación de funciones se está ejecutando.

    Aplicación de funciones en ejecución

  3. En la barra de direcciones del explorador, anexe la cadena /api/HttpExample?name=Functions a la URL base y ejecute la solicitud.

    La dirección URL que llama a la función de desencadenador HTTP tiene el formato siguiente:

    http://<APP_NAME>.azurewebsites.net/api/HttpExample?name=Functions

  4. Vaya a esta dirección URL y verá una respuesta en el explorador para la solicitud GET remota devuelta por la función, que es similar a la del siguiente ejemplo:

    Respuesta de la función en el explorador

Limpieza de recursos

En Azure, los recursos son aplicaciones de función, funciones o cuentas de almacenamiento, entre otros. Se agrupan en grupos de recursos y se puede eliminar todo el contenido de un grupo si este se elimina.

Ha creado recursos de Azure para completar estas guías de inicio rápido. Se le pueden facturar por estos recursos, dependiendo del estado de la cuentade los y precios de los servicios. Otras guías de inicio rápido de esta colección se basan en los valores de esta. Si tiene previsto trabajar con los siguientes inicios rápidos, tutoriales o con cualquiera de los servicios que haya creado en este inicio rápido, no elimine los recursos.

Use los pasos siguientes para eliminar la aplicación de funciones y sus recursos relacionados para evitar incurrir en costos adicionales.

  1. En el cuadro de diálogo Visual Studio Publish, en la sección Hospedaje, seleccione Abrir en Azure Portal.

  2. En la página de la aplicación de funciones, seleccione la pestaña Información general y, después, seleccione el vínculo situado bajo Grupo de recursos.

    Seleccione el grupo de recursos que se va a eliminar de la página de la aplicación de funciones

  3. En la página Grupo de recursos, revise la lista de recursos incluidos y compruebe que son los que desea eliminar.

  4. Seleccione Eliminar grupo de recursos y siga las instrucciones.

    El proceso de eliminación tardará un par de minutos. Cuando termine, aparece una notificación durante unos segundos. También puede seleccionar el icono de campana en la parte superior de la página para ver la notificación.

Pasos siguientes

En este inicio rápido, ha usado Visual Studio para crear y publicar una aplicación de funciones en C# en Azure con una función de desencadenador HTTP sencilla.

El siguiente artículo depende del modelo de proceso elegido.

Para obtener más información sobre cómo trabajar con funciones de C# que se ejecutan In-Process el host de Functions, consulte Desarrollo de funciones de la biblioteca de clases de C# con Azure Functions.

Prosiga en el siguiente artículo para aprender a agregar un enlace de cola de Azure Storage a la función: