Navegando a amostra de fornecedor de recursos personalizado Hello World
Aplica-se a: Windows Azure Pack
Um fornecedor de recursos personalizados de amostra é fornecido como parte do Windows Azure Pack para Windows Kit de Desenvolvedores de Servidores. Para obter mais informações, consulte https://www.microsoft.com/en-us/download/details.aspx?id=41146.
A amostra Hello World fornece tanto o portal de gestão para o portal de gestão para o administrador como para o portal de gestão para as extensões de interface de utilizador dos inquilinos, bem como as implementações necessárias no ponto final. Como uma amostra baseada no site ASP.NET MVC, os controladores são utilizados fornecem as definições de ponto final que permitem o acesso aos recursos do fornecedor de recursos. Também são utilizados para fazer chamadas para a API de Gestão de Serviços em nome da interface de utilizador do portal de gestão. As extensões de interface de utilizador do portal de gestão de recursos personalizados são expressas como pontos de vista.
Extensões e controladores da interface do utilizador
A interface do utilizador da amostra fornece extensões para o portal de gestão para administradores e o portal de gestão para inquilinos. Uma interface de utilizador baseada no JavaScript do lado do cliente está disponível através do Internet Explorer. Os projetos de amostragem são:
Projeto |
Descrição |
Microsoft.WAP.Samples.HelloWorld.AdminExtension |
Portal de gestão para extensão de administradores |
Microsoft.WAP.Samples.HelloWorld.TenantExtension |
Portal de gestão para extensão de inquilinos |
Para obter mais informações sobre como a interface do utilizador do lado do cliente é criada, consulte Windows extensões de interface de utilizador do Portal de Gestão de Pacotes Azure.
Dentro destes projetos, os controladores MVC do lado do servidor são utilizados para interagir com a API de Gestão de Serviços. Os ficheiros de origem do controlador são
Ficheiro |
Description |
---|---|
OláWorldAdminController.cs |
Fornece acesso ao ponto final do administrador do fornecedor de recursos, AdminSettingsController.cs e outros em Microsoft.WAP.Samples.HelloWorld.API. |
OláWorldTenantController.cs |
Fornece acesso ao ponto final do inquilino do fornecedor de recursos, FileShareController.cs em Microsoft.WAP.Samples.HelloWorld.API. |
Ambos os controladores utilizam HelloWorldClient.cs em Microsoft.WAP.Samples.HelloWorld.APIClient para encaminhar chamadas através da API de Gestão de Serviços para o fornecedor de recursos personalizados Hello World.
Implementação de ponto final do fornecedor de recursos
Os quatro pontos finais REST são implementados como controladores do lado do servidor no projeto de amostra Hello World, Microsoft.WAP.HelloWorld.API. Há 7 controladores representando o administrador e os pontos finais do inquilino. O FileShareController.cs representa o ponto final do arrendatário enquanto os outros representam o ponto final do administrador.
Rastreio de Client-Side chamadas de extensão do utilizador para pontos finais do fornecedor de recursos
O processo pelo qual a atividade do utilizador do portal de gestão do lado do cliente resulta numa chamada para um dos pontos finais do fornecedor de recursos. Neste exemplo, um inquilino utiliza o portal de gestão personalizada para a extensão da interface de utilizador dos inquilinos para a Quick Create uma partilha de ficheiros.
O inquilino escolhe criar uma partilha de ficheiros rápida. Lado do cliente processado Em HelloWorldTenantController.js isto resulta num lado do servidor de chamada REST para CreateFileShare no HelloWorldTenantController.cs
public JsonResult CreateFileShare(string subscriptionId, FileShareModel fileShareToCreate) { this.apiClient.CreateFileShare(subscriptionId, fileShareToCreate.ToApiObject()); return this.Json(fileShareToCreate); }
CreateFileShare chama CreateFileShare na classe de ajudante de cliente api definida em HelloWorldClient.cs — Microsoft.WAP.Samples.HelloWorld.APIClient. Esta função faz o trabalho de construção do URI para a API do Inquilino de Partilha de Ficheiros Criar Ficheiros API no prestador de recursos Hello World e fazer a chamada através da API de Gestão de Serviços.
public void CreateFileShare(string subscriptionId, FileShare fileShareNameToCreate) { var requestUrl = this.CreateRequestUri(string.Format(CultureInfo.InvariantCulture, HelloWorldClient.FileShares, subscriptionId)); this.Post<FileShare>(requestUrl, fileShareNameToCreate); }
O caminho relativo para a chamada DE REST de Partilhas de Ficheiros é definido em HelloWorldClient.FileShares. A definição para todos os caminhos relativos do administrador e inquilino está na HelloWorldClient.cs.
Para construir o URI completo, a CreateRequestUri (HelloWorldClient) também necessita do ponto final da API de Gestão de Serviços obtido a partir 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 é atribuído no construtor de classe HelloWorldClient que é criado no construtor de classe HelloWorldTenantController. rdfeEndpoint é o ponto final da API de Gestão de Serviços.
public HelloWorldTenantController() { // var rdfeEndpoint = new Uri(AppManagementConfiguration.Instance.RdfeUnifiedManagementServiceUri); var handler = new BearerMessageProcessingHandler(); this.apiClient = new HelloWorldClient(rdfeEndpoint, handler); }
A chamada para isto. Post in CreateFileShare (HelloWorldClient.cs) envia a chamada REST, com o organismo de pedido de nome de partilha de ficheiros, para a API de Gestão de Serviços que encaminha a chamada para o fornecedor de recursos personalizados Hello World.
O ponto final do inquilino do fornecedor personalizado Hello World recebe a chamada de partilha de ficheiros create no FileShareController.cs e executa a ação apropriada.
[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 }; }
Registo do Fornecedor de Recursos Hello World
O projeto de amostra hello world Microsoft.WAP.Samples.HelloWorld.Setup fornece um instalador e registo para o fornecedor do cliente. Está documentado na Implementação de uma extensão do Portal de Gestão de Pacotes Azure Windows. Especificamente relacionado com o registo de um fornecedor de recursos personalizados está a registar os pontos finais com Windows Azure Pack. A amostra hello world usa um script Windows PowerShell (Register-ResourceProvider.ps1) para registar os pontos finais do fornecedor de recursos personalizados. Isto dá ao Windows Azure Pack as informações necessárias para passar corretamente as chamadas REST através da API de Gestão de Serviços ao fornecedor de recursos personalizados Hello World. No script, Windows cmdlets Azure Pack PowerShell realizam o registo. O parâmetro rpSettings fornece as informações necessárias para registar os pontos finais e outras informações de configuração.
$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'."