Navegación por el ejemplo del proveedor de recursos personalizado de Hola mundo
Se aplica a: Windows Azure Pack
Se proporciona un proveedor de recursos personalizado de ejemplo como parte del Windows Azure Pack para Windows Kit para desarrolladores de servidores. Para obtener más información, vea https://www.microsoft.com/en-us/download/details.aspx?id=41146.
El ejemplo de Hola mundo proporciona tanto el portal de administración para el portal de administración como para las extensiones de interfaz de usuario de inquilinos, así como las implementaciones de punto de conexión necesarias. Como ejemplo basado en el sitio web de MVC ASP.NET, los controladores se usan para proporcionar las definiciones de punto de conexión que permiten el acceso a los recursos del proveedor de recursos. También se usan para realizar llamadas a service Management API en nombre de la interfaz de usuario del portal de administración. Las extensiones de la interfaz de usuario del portal de administración del proveedor de recursos personalizados se expresan como vistas.
Controladores y extensiones de interfaz de usuario
La interfaz de usuario de ejemplo proporciona extensiones para el portal de administración para administradores y el portal de administración para inquilinos. Hay disponible una interfaz de usuario basada en JavaScript del lado cliente a través de Internet Explorer. Los proyectos de ejemplo son:
Proyecto |
Descripción |
Microsoft.WAP.Samples.HelloWorld.AdminExtension |
Portal de administración para la extensión de administradores |
Microsoft.WAP.Samples.HelloWorld.TenantExtension |
Portal de administración para la extensión de inquilinos |
Para más información sobre cómo se crea la interfaz de usuario del lado cliente, consulte Windows Extensiones de interfaz de usuario del Portal de administración de módulos de Azure.
En estos proyectos, los controladores MVC del lado servidor se usan para interactuar con la API de Administración de servicios. Los archivos de origen del controlador son
Archivo |
Descripción |
---|---|
HelloWorldAdminController.cs |
Proporciona acceso al punto de conexión de administrador del proveedor de recursos, AdminSettingsController.cs y otros en Microsoft.WAP.Samples.HelloWorld.API. |
HelloWorldTenantController.cs |
Proporciona acceso al punto de conexión del inquilino del proveedor de recursos, FileShareController.cs en Microsoft.WAP.Samples.HelloWorld.API. |
Ambos controladores usan HelloWorldClient.cs en Microsoft.WAP.Samples.HelloWorld.APIClient para enrutar las llamadas a través de service Management API al proveedor de recursos personalizado Hola mundo.
Implementación del punto de conexión del proveedor de recursos
Los cuatro puntos de conexión REST se implementan como controladores del lado servidor en el proyecto de ejemplo de Hola mundo, Microsoft.WAP.HelloWorld.API. Hay 7 controladores que representan los puntos de conexión de administrador e inquilino. FileShareController.cs representa el punto de conexión del inquilino, mientras que los demás representan el punto de conexión de administrador.
Seguimiento de llamadas de extensión de usuario Client-Side a puntos de conexión del proveedor de recursos
El proceso por el que una actividad de usuario del portal de administración del lado cliente da como resultado una llamada a uno de los puntos de conexión del proveedor de recursos es el siguiente. En este ejemplo, un inquilino usa el portal de administración personalizado para la extensión de interfaz de usuario de inquilinos para crear un recurso compartido de archivos de forma rápida.
El inquilino elige Crear rápidamente un recurso compartido de archivos. Procesado del lado cliente En HelloWorldTenantController.js esto da como resultado una llamada de REST del lado servidor a CreateFileShare en HelloWorldTenantController.cs
public JsonResult CreateFileShare(string subscriptionId, FileShareModel fileShareToCreate) { this.apiClient.CreateFileShare(subscriptionId, fileShareToCreate.ToApiObject()); return this.Json(fileShareToCreate); }
CreateFileShare llama a CreateFileShare en la clase auxiliar del cliente de API definida en HelloWorldClient.cs: Microsoft.WAP.Samples.HelloWorld.APIClient. Esta función realiza el trabajo de compilar el URI para la llamada a la API DE REST Create File Share Tenant en el proveedor de recursos de Hola mundo y realizar la llamada a través de la API de Administración de servicios.
public void CreateFileShare(string subscriptionId, FileShare fileShareNameToCreate) { var requestUrl = this.CreateRequestUri(string.Format(CultureInfo.InvariantCulture, HelloWorldClient.FileShares, subscriptionId)); this.Post<FileShare>(requestUrl, fileShareNameToCreate); }
La ruta de acceso relativa para la llamada REST de recursos compartidos de archivos se define en HelloWorldClient.FileShares. La definición de todas las rutas de acceso relativas al administrador y al inquilino está en HelloWorldClient.cs.
Para compilar el URI completo, CreateRequestUri (HelloWorldClient) también necesita el punto de conexión de la API de Service Management obtenido de BaseEndpoint.
private Uri CreateRequestUri(string relativePath, string queryString = "") { var endpoint = new Uri(this.BaseEndpoint, relativePath); var uriBuilder = new UriBuilder(endpoint); uriBuilder.Query = queryString; return uriBuilder.Uri; }
BaseEndpoint se asigna en el constructor de clase HelloWorldClient que se crea en el constructor de clase HelloWorldTenantController. rdfeEndpoint es el punto de conexión de la API de Service Management.
public HelloWorldTenantController() { // var rdfeEndpoint = new Uri(AppManagementConfiguration.Instance.RdfeUnifiedManagementServiceUri); var handler = new BearerMessageProcessingHandler(); this.apiClient = new HelloWorldClient(rdfeEndpoint, handler); }
La llamada a esto. Post in CreateFileShare (HelloWorldClient.cs) envía la llamada REST, con el cuerpo de solicitud de nombre del recurso compartido de archivos adjunto, a la API de Service Management que enruta la llamada al proveedor de recursos personalizado Hola mundo.
El punto de conexión del inquilino del proveedor personalizado hello world recibe la llamada al recurso compartido de archivos de creación en FileShareController.cs y realiza la acción adecuada.
[HttpPost] public void CreateFileShare(FileShare fileShare) { fileShares.Add(new FileShare { Id = fileShares.Count, FileServerName = fileShare.FileServerName, Name = fileShare.Name, SubscriptionId = fileShare.SubscriptionId, Size = fileShare.Size }; }
Registro del proveedor de recursos de Hola mundo
El proyecto de ejemplo hello world Microsoft.WAP.Samples.HelloWorld.Setup proporciona un instalador y un registro para el proveedor de clientes. Se documenta en Implementación de una extensión del Portal de administración de módulos de Azure Windows. Específicamente relacionado con el registro de un proveedor de recursos personalizado está registrando los puntos de conexión con Windows Azure Pack. El ejemplo hello world usa un script de Windows PowerShell (Register-ResourceProvider.ps1) para registrar los puntos de conexión del proveedor de recursos personalizados. Esto proporciona a Windows Azure Pack la información necesaria para pasar correctamente las llamadas REST a través de service Management API al proveedor de recursos personalizado Hola mundo. En el script, Windows los cmdlets de PowerShell de Azure Pack realizan el registro. El parámetro rpSettings proporciona la información de punto de conexión necesaria que se usa para registrar los puntos de conexión y otra información de configuración.
$rpSettings = @{
'Name' = $rpName;
'DisplayName' = 'Hello World';
'InstanceDisplayName' = 'Hello World';
'AdminForwardingAddress' = "http://$hostName/admin";
'AdminAuthenticationMode' = 'Basic';
'AdminAuthenticationUserName' = $userName;
'AdminAuthenticationPassword' = $password;
'TenantForwardingAddress' = "http://$hostName/";
'TenantAuthenticationMode' = 'Basic';
'TenantAuthenticationUserName' = $userName;
'TenantAuthenticationPassword' = $password;
'TenantSourceUriTemplate' = '{subid}/services/helloworld/{*path}';
'TenantTargetUriTemplate' = 'subscriptions/{subid}/{*path}';
'NotificationForwardingAddress' = "http://$hostName/admin";
'NotificationAuthenticationMode' = 'Basic';
'NotificationAuthenticationUserName' = $userName;
'NotificationAuthenticationPassword' = $password;
}
Write-Host -ForegroundColor Green "Create new resource provider '$rpName'..."
$rp = New-ResourceProvider @rpSettings
Write-Host -ForegroundColor Green "Created new resource provider '$rpName'."
Consulte también
Windows proveedores de recursos personalizados de Azure Pack