Desarrollar un complemento de puerta de enlace

Se aplica a: Windows Admin Center, versión preliminar de Windows Admin Center

Un complemento de puerta de enlace de Windows Admin Center habilita la comunicación de API desde la interfaz de usuario de la herramienta o solución a un nodo de destino. Windows Admin Center hospeda un servicio de puerta de enlace que retransmite comandos y scripts desde complementos de puerta de enlace que se ejecutarán en nodos de destino. El servicio de puerta de enlace se puede ampliar para incluir complementos de puerta de enlace personalizados que admitan protocolos distintos de los predeterminados.

Estos complementos de puerta de enlace se incluyen de forma predeterminada con Windows Admin Center:

  • Complemento de puerta de enlace de PowerShell
  • Complemento de puerta de enlace de WMI

Si desea comunicarse con un protocolo distinto de PowerShell o WMI (por ejemplo, REST), puede crear su propio complemento de puerta de enlace. Los complementos de puerta de enlace se cargan en un dominio AppDomain independiente del proceso de puerta de enlace existente, pero usan el mismo nivel de elevación para los derechos.

Nota

¿No está familiarizado con los diferentes tipos de extensión? Obtenga más información sobre la arquitectura de extensibilidad y los tipos de extensión.

Importante

El SDK y las herramientas de desarrollo de Windows Admin Center aún no se han actualizado para admitir el desarrollo de complementos de puerta de enlace compatibles con la puerta de enlace modernizada de Windows Admin Center. El seguimiento de esta guía no dará como resultado una extensión compatible con la puerta de enlace modernizada.

Si estás interesado en desarrollar un complemento de puerta de enlace para la puerta de enlace modernizada o actualizar el complemento de puerta de enlace existente, envía un correo electrónico a wacextensionrequest@microsoft.com.

Preparación del entorno

Si aún no lo ha hecho, prepare el entorno mediante la instalación de dependencias y requisitos previos globales necesarios para todos los proyectos.

Creación de un complemento de puerta de enlace (biblioteca de C#)

Para crear un complemento de puerta de enlace personalizado, cree una nueva clase C# que implemente la interfaz IPlugIn desde el espacio de nombres Microsoft.ManagementExperience.FeatureInterfaces.

Nota

La interfaz IFeature, disponible en versiones anteriores del SDK, ahora está marcada como obsoleta. Todo el desarrollo de complementos de puerta de enlace debe usar IPlugIn (o, opcionalmente, la clase abstracta HttpPlugIn).

Descarga de un ejemplo de GitHub

Para empezar a trabajar rápidamente con un complemento de puerta de enlace personalizado, puede clonar o descargar una copia de nuestro proyecto de complemento de C# de ejemplo desde nuestro sitio de GitHub del SDK de Windows Admin Center.

Agregar contenido

Agregue contenido nuevo a la copia clonada del proyecto de complemento de C# de ejemplo (o su propio proyecto) para que contenga las API personalizadas y, después, compile el archivo DLL del complemento de puerta de enlace personalizado que se usará en los pasos siguientes.

Implementación del complemento para pruebas

Pruebe el archivo DLL del complemento de puerta de enlace personalizado cargándolo en el proceso de puerta de enlace de Windows Admin Center.

Windows Admin Center busca todos los complementos en una carpeta plugins en la carpeta Application Data del equipo actual (mediante el valor CommonApplicationData de la enumeración Environment.SpecialFolder). En Windows 10 esta ubicación es C:\ProgramData\Server Management Experience. Si la carpeta plugins aún no existe, la puede crear usted mismo.

Nota

Puede invalidar la ubicación del complemento en una compilación de depuración actualizando el valor de configuración "StaticsFolder". Si está depurando localmente, esta configuración se encuentra en la solución App.Config del Escritorio.

Dentro de la carpeta plugins (en este ejemplo, C:\ProgramData\Server Management Experience\plugins)

  • Cree una carpeta con el mismo nombre que el valor de propiedad Name de Feature en el archivo DLL del complemento de puerta de enlace personalizado (en nuestro proyecto de ejemplo, Name es "Sample Uno")
  • Copie el archivo DLL del complemento de puerta de enlace personalizado en esta nueva carpeta
  • Reinicie el proceso de Windows Admin Center

Después de reiniciar el proceso de Administrador de Windows, podrá ejercer las API en el archivo DLL del complemento de puerta de enlace personalizado mediante la emisión de una instrucción GET, PUT, PATCH, DELETE o POST en http(s)://{domain|localhost}/api/nodes/{node}/features/{feature name}/{identifier}

Opcional: Asociación al complemento para la depuración

En Visual Studio 2017, en el menú Depurar, seleccione "Asociar al proceso". En la ventana siguiente, desplácese por la lista Procesos disponibles, seleccione SMEDesktop.exe y haga clic en "Adjuntar". Una vez que se inicia el depurador, puede colocar un punto de interrupción en el código de la característica y, después, practicar con el formato de dirección URL anterior. Para nuestro proyecto de ejemplo (nombre de la característica: "Sample Uno"), la dirección URL es: "<http://localhost:6516/api/nodes/fake-server.my.domain.com/features/Sample%20Uno>"

Creación de una extensión de herramienta con el SDK de Windows Admin Center

Ahora es necesario crear una extensión de herramienta desde la que puede llamar al complemento de puerta de enlace personalizado. Cree o vaya a una carpeta donde quiera almacenar los archivos del proyecto, abra un símbolo del sistema y establezca esa carpeta como directorio de trabajo. Con el SDK de Windows Admin Center que se instaló anteriormente, cree una extensión nueva con la sintaxis siguiente:

wac create --company "{!Company Name}" --tool "{!Tool Name}"
Value Explicación Ejemplo
{!Company Name} Nombre de la empresa (con espacios) Contoso Inc
{!Tool Name} Nombre de la herramienta (con espacios) Manage Foo Works

Observa el siguiente ejemplo de uso:

wac create --company "Contoso Inc" --tool "Manage Foo Works"

Esto crea una carpeta nueva dentro del directorio de trabajo actual con el nombre especificado para la herramienta, copia todos los archivos de plantilla necesarios en el proyecto y configura los archivos con su empresa y el nombre de la herramienta.

Ahora, cambie el directorio a la carpeta que acaba de crear y, después, instale las dependencias locales necesarias mediante la ejecución del comando siguiente:

npm install

Una vez que se complete, configurará todo lo que necesita para cargar la nueva extensión en Windows Admin Center.

Conexión de la extensión de herramienta al complemento de puerta de enlace personalizado

Ahora que ha creado una extensión con el SDK de Windows Admin Center, todo está listo para que conecte la extensión de herramienta al complemento de puerta de enlace personalizado siguiendo los pasos siguientes:

Compilación y carga lateral de la extensión

Ahora, compile y cargue la extensión en Windows Admin Center. Abra una ventana de comandos, cambie el directorio al directorio de origen y, después, estará listo para compilar.

  • Compilación y servicio con gulp:

    gulp build
    gulp serve -p 4201
    

Tenga en cuenta que debe elegir un puerto que actualmente sea gratuito. Asegúrese de no intentar usar el puerto en el que se ejecuta Windows Admin Center.

El proyecto se puede cargar lateralmente en una instancia local de Windows Admin Center para realizar pruebas. Para ello, adjunte el proyecto que se sirve localmente en Windows Admin Center.

  • Inicie Windows Admin Center en un explorador web

  • Abra el depurador (F12)

  • Abra la consola y escriba el comando siguiente:

    MsftSme.sideLoad("http://localhost:4201")
    
  • Actualice el explorador web

Ahora, el proyecto estará visible en la lista Herramientas con (side loaded [carga lateral]) junto al nombre.

Destino de una versión diferente del SDK de Windows Admin Center

Mantener la extensión actualizada con los cambios del SDK y los cambios en la plataforma es fácil. Lea sobre cómo apuntar a una versión diferente del SDK de Windows Admin Center.