Compartilhar via


Navegando no exemplo do provedor de recursos personalizado Olá, Mundo

 

Aplica-se a: Windows Azure Pack

Um exemplo de Provedor de Recursos Personalizados é fornecido como parte do Windows Azure Pack para Windows Server Developer Kit. Para obter mais informações, consulte https://www.microsoft.com/en-us/download/details.aspx?id=41146.

O exemplo de Olá, Mundo fornece o portal de gerenciamento para o administrador e o portal de gerenciamento para extensões de interface do usuário de locatários, bem como as implementações de ponto de extremidade necessárias. Como um MVC ASP.NET exemplo baseado em site, os controladores são usados para fornecer as definições de ponto de extremidade que permitem o acesso aos recursos do provedor de recursos. Eles também são usados para fazer chamadas para a API de Gerenciamento de Serviços em nome da interface do usuário do portal de gerenciamento. As extensões de interface do usuário do administrador do portal de gerenciamento de provedores de recursos personalizados são expressas como exibições.

Windows Azure Pack Hello World Sample

Extensões e controladores da interface do usuário

A interface do usuário de exemplo fornece extensões para o portal de gerenciamento para administradores e o portal de gerenciamento para locatários. Uma interface do usuário baseada em JavaScript do lado do cliente está disponível por meio do Internet Explorer. Os projetos de exemplo são:

Projeto

Descrição

Microsoft.WAP.Samples.HelloWorld.AdminExtension

Portal de gerenciamento para extensão de administradores

Microsoft.WAP.Samples.HelloWorld.TenantExtension

Portal de gerenciamento para extensão de locatários

Para obter mais informações sobre como a interface do usuário do lado do cliente é criada, consulte Windows Extensões de Interface do Usuário do Portal de Gerenciamento do Azure Pack.

Nesses projetos, os controladores MVC do lado do servidor são usados para interagir com a API de Gerenciamento de Serviços. Os arquivos de origem do controlador são

Arquivo

Descrição

HelloWorldAdminController.cs

Fornece acesso ao ponto de extremidade de administrador do provedor de recursos, AdminSettingsController.cs e outros em Microsoft.WAP.Samples.HelloWorld.API.

HelloWorldTenantController.cs

Fornece acesso ao ponto de extremidade de locatário do provedor de recursos, FileShareController.cs em Microsoft.WAP.Samples.HelloWorld.API.

Ambos os controladores usam HelloWorldClient.cs em Microsoft.WAP.Samples.HelloWorld.APIClient para rotear chamadas por meio da API de Gerenciamento de Serviços para o provedor de recursos personalizado Olá, Mundo.

Implementação do ponto de extremidade do provedor de recursos

Os quatro pontos de extremidade REST são implementados como controladores do lado do servidor no Olá, Mundo projeto de exemplo, Microsoft.WAP.HelloWorld.API. Há 7 controladores que representam os pontos de extremidade de administrador e locatário. FileShareController.cs representa o ponto de extremidade do locatário, enquanto os outros representam o ponto de extremidade do administrador.

Rastreamento Client-Side chamadas de extensão de usuário para pontos de extremidade do provedor de recursos

O processo pelo qual uma atividade de usuário do portal de gerenciamento do lado do cliente resulta em uma chamada para um dos pontos de extremidade do provedor de recursos é o seguinte. Neste exemplo, um locatário usa o portal de gerenciamento personalizado para a extensão de interface do usuário de locatários para criar rapidamente um compartilhamento de arquivos.

  1. O locatário opta por criar rapidamente um compartilhamento de arquivo. Lado do cliente processado em HelloWorldTenantController.js isso resulta em uma chamada REST do lado do servidor para CreateFileShare em HelloWorldTenantController.cs

    public JsonResult CreateFileShare(string subscriptionId, FileShareModel fileShareToCreate)
        {
            this.apiClient.CreateFileShare(subscriptionId, fileShareToCreate.ToApiObject());
    
            return this.Json(fileShareToCreate);
        }
    
  2. CreateFileShare chama CreateFileShare na classe auxiliar de cliente de api definida em HelloWorldClient.cs — Microsoft.WAP.Samples.HelloWorld.APIClient. Essa função faz o trabalho de criar o URI para a chamada à API REST do Locatário do Compartilhamento de Arquivos no provedor de recursos Olá, Mundo e fazer a chamada por meio da API de Gerenciamento 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 REST de Compartilhamentos de Arquivos é definido em HelloWorldClient.FileShares. A definição para todos os caminhos relativos de administrador e locatário está em HelloWorldClient.cs.

  3. Para criar o URI completo, CreateRequestUri (HelloWorldClient) também precisa do ponto de extremidade da API de Gerenciamento de Serviço obtido do 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 da classe HelloWorldTenantController. rdfeEndpoint é o ponto de extremidade da API de Gerenciamento de Serviços.

    public HelloWorldTenantController()
        {
            // 
            var rdfeEndpoint = new Uri(AppManagementConfiguration.Instance.RdfeUnifiedManagementServiceUri);
    
            var handler = new BearerMessageProcessingHandler();
    
            this.apiClient = new HelloWorldClient(rdfeEndpoint, handler);           
        }    
    
  4. A chamada para isso. Post in CreateFileShare (HelloWorldClient.cs) envia a chamada REST, com o corpo da solicitação de nome do compartilhamento de arquivo, para a API de Gerenciamento de Serviços que roteia a chamada para o provedor de recursos personalizado Olá, Mundo.

  5. O ponto de extremidade de locatário do provedor personalizado hello world recebe a chamada criar compartilhamento de arquivo em 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
        };
    }
    

Registrando o provedor de recursos Olá, Mundo

O projeto de exemplo hello world Microsoft.WAP.Samples.HelloWorld.Setup fornece um instalador e um registro para o provedor de clientes. Ele está documentado na implantação de uma extensão do portal de gerenciamento do Azure Pack Windows. Especificamente relacionado ao registro de um provedor de recursos personalizado está registrando os pontos de extremidade com Windows Azure Pack. O exemplo hello world usa um script de Windows PowerShell (Register-ResourceProvider.ps1) para registrar os pontos de extremidade do provedor de recursos personalizados. Isso fornece Windows Pacote do Azure as informações necessárias para passar corretamente as chamadas REST por meio da API de Gerenciamento de Serviços para o provedor de recursos personalizado Olá, Mundo. No script, Windows cmdlets do PowerShell do Azure Pack executam o registro. O parâmetro rpSettings fornece as informações de ponto de extremidade necessárias usadas para registrar os pontos de extremidade 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'."

Consulte Também

Windows provedores de recursos personalizados do Azure Pack