Partager via


Navigation dans l’exemple de fournisseur de ressources personnalisé Hello World

 

S’applique à : Windows Azure Pack

Un exemple de fournisseur de ressources personnalisé est fourni dans le cadre du Windows Azure Pack pour Windows Kit de développement Server. Pour plus d’informations, consultez https://www.microsoft.com/en-us/download/details.aspx?id=41146.

L’exemple Hello World fournit à la fois le portail de gestion pour l’administrateur et le portail de gestion pour les extensions d’interface utilisateur des locataires, ainsi que les implémentations de point de terminaison requises. En tant qu’exemple MVC ASP.NET site web, les contrôleurs sont utilisés pour fournir les définitions de point de terminaison qui autorisent l’accès aux ressources du fournisseur de ressources. Ils sont également utilisés pour effectuer des appels à l’API Gestion des services pour le compte de l’interface utilisateur du portail de gestion. Les extensions d’interface utilisateur de l’administrateur du portail de gestion des fournisseurs de ressources personnalisées sont exprimées sous forme de vues.

Windows Azure Pack Hello World Sample

Extensions et contrôleurs d’interface utilisateur

L’exemple d’interface utilisateur fournit des extensions pour le portail de gestion pour les administrateurs et le portail de gestion pour les locataires. Une interface utilisateur JavaScript côté client est disponible via Internet Explorer. Les exemples de projets sont les suivants :

Projet

Description

Microsoft.WAP.Samples.HelloWorld.AdminExtension

Portail de gestion pour l’extension administrateurs

Microsoft.WAP.Samples.HelloWorld.TenantExtension

Portail de gestion pour l’extension des locataires

Pour plus d’informations sur la création de l’interface utilisateur côté client, consultez Windows extensions de l’interface utilisateur du portail d’administration Azure Pack.

Dans ces projets, les contrôleurs MVC côté serveur sont utilisés pour interagir avec l’API Gestion des services. Les fichiers sources du contrôleur sont

Fichier

Description

HelloWorldAdminController.cs

Fournit l’accès au point de terminaison administrateur du fournisseur de ressources, AdminSettingsController.cs et autres dans Microsoft.WAP.Samples.HelloWorld.API.

HelloWorldTenantController.cs

Fournit l’accès au point de terminaison du locataire du fournisseur de ressources, FileShareController.cs dans Microsoft.WAP.Samples.HelloWorld.API.

Les deux contrôleurs utilisent HelloWorldClient.cs dans Microsoft.WAP.Samples.HelloWorld.APIClient pour acheminer les appels via l’API Gestion des services vers le fournisseur de ressources personnalisé Hello World.

Implémentation du point de terminaison du fournisseur de ressources

Les quatre points de terminaison REST sont implémentés en tant que contrôleurs côté serveur dans l’exemple de projet Hello World, Microsoft.WAP.HelloWorld.API. Il existe 7 contrôleurs représentant les points de terminaison d’administrateur et de locataire. FileShareController.cs représente le point de terminaison du locataire tandis que les autres représentent le point de terminaison administrateur.

Traçage Client-Side appels d’extension utilisateur aux points de terminaison du fournisseur de ressources

Le processus par lequel une activité utilisateur du portail de gestion côté client entraîne un appel à l’un des points de terminaison du fournisseur de ressources est le suivant. Dans cet exemple, un locataire utilise le portail de gestion personnalisé pour l’extension d’interface utilisateur des locataires pour créer rapidement un partage de fichiers.

  1. Le locataire choisit de créer rapidement un partage de fichiers. Traité côté client dans HelloWorldTenantController.js cela entraîne un appel REST côté serveur à CreateFileShare dans HelloWorldTenantController.cs

    public JsonResult CreateFileShare(string subscriptionId, FileShareModel fileShareToCreate)
        {
            this.apiClient.CreateFileShare(subscriptionId, fileShareToCreate.ToApiObject());
    
            return this.Json(fileShareToCreate);
        }
    
  2. CreateFileShare appelle CreateFileShare dans la classe d’assistance du client api définie dans HelloWorldClient.cs — Microsoft.WAP.Samples.HelloWorld.APIClient. Cette fonction effectue le travail de création de l’URI pour l’appel DE l’API REST Create File Share Tenant sur le fournisseur de ressources Hello World et d’effectuer l’appel via l’API Gestion des services.

    public void CreateFileShare(string subscriptionId, FileShare fileShareNameToCreate)
        {
            var requestUrl = this.CreateRequestUri(string.Format(CultureInfo.InvariantCulture, HelloWorldClient.FileShares, subscriptionId));
            this.Post<FileShare>(requestUrl, fileShareNameToCreate);
        }
    

    Le chemin relatif de l’appel REST partages de fichiers est défini dans HelloWorldClient.FileShares. La définition de tous les chemins d’accès relatifs de l’administrateur et du locataire est dans HelloWorldClient.cs.

  3. Pour générer l’URI complet, CreateRequestUri (HelloWorldClient) a également besoin du point de terminaison de l’API Gestion des services obtenu à 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 est affecté dans le constructeur de classe HelloWorldClient qui est créé dans le constructeur de classe HelloWorldTenantController. rdfeEndpoint est le point de terminaison de l’API Gestion des services.

    public HelloWorldTenantController()
        {
            // 
            var rdfeEndpoint = new Uri(AppManagementConfiguration.Instance.RdfeUnifiedManagementServiceUri);
    
            var handler = new BearerMessageProcessingHandler();
    
            this.apiClient = new HelloWorldClient(rdfeEndpoint, handler);           
        }    
    
  4. Appel à ceci. La publication dans CreateFileShare (HelloWorldClient.cs) envoie l’appel REST, avec le corps de la demande de nom de partage de fichiers associé, à l’API Gestion des services qui achemine l’appel vers le fournisseur de ressources personnalisé Hello World.

  5. Le point de terminaison du locataire du fournisseur personnalisé hello world reçoit l’appel de création de partage de fichiers dans FileShareController.cs et effectue l’action appropriée.

    [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
        };
    }
    

Inscription du fournisseur de ressources Hello World

L’exemple de projet Hello World Microsoft.WAP.Samples.HelloWorld.Setup fournit un programme d’installation et une inscription pour le fournisseur client. Il est documenté dans Déploiement d’une Windows l’extension du portail d’administration Azure Pack. En particulier, l’inscription d’un fournisseur de ressources personnalisé inscrit les points de terminaison avec Windows Azure Pack. L’exemple hello world utilise un script Windows PowerShell (Register-ResourceProvider.ps1) pour inscrire les points de terminaison de fournisseur de ressources personnalisés. Cela donne Windows Azure Pack les informations nécessaires pour passer correctement les appels REST via l’API Gestion des services au fournisseur de ressources personnalisé Hello World. Dans le script, Windows applets de commande Azure Pack PowerShell effectuent l’inscription. Le paramètre rpSettings fournit les informations de point de terminaison nécessaires pour inscrire les points de terminaison et d’autres informations de configuration.

$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'."

Voir aussi

Windows fournisseurs de ressources personnalisés Azure Pack