Поделиться через


Навигация по образцу пользовательского поставщика ресурсов Hello World

 

Область применения: Windows Пакет Azure

Пример настраиваемого поставщика ресурсов предоставляется в составе пакета Azure Windows для Windows server Developer Kit. Для получения дополнительной информации см. https://www.microsoft.com/en-us/download/details.aspx?id=41146.

Пример Hello World предоставляет портал управления для расширений пользовательского интерфейса клиентов и портала управления для администраторов и управления, а также необходимых реализаций конечных точек. В качестве примера на основе веб-сайта ASP.NET MVC контроллеры предоставляют определения конечных точек, которые разрешают доступ к ресурсам поставщика ресурсов. Они также используются для вызова API управления службами от имени пользовательского интерфейса портала управления. Расширения пользовательского интерфейса администратора портала управления поставщиком ресурсов выражаются в виде представлений.

Windows Azure Pack Hello World Sample

Расширения пользовательского интерфейса и контроллеры

Пример пользовательского интерфейса предоставляет расширения для портала управления для администраторов и портала управления для клиентов. Пользовательский интерфейс на основе JavaScript на стороне клиента доступен через Internet Explorer. Примеры проектов:

Проект

Описание

Microsoft.WAP.Samples.HelloWorld.AdminExtension

Портал управления для расширения администраторов

Microsoft.WAP.Samples.HelloWorld.TenantExtension

Портал управления для расширения клиентов

Дополнительные сведения о создании пользовательского интерфейса на стороне клиента см. в статье Windows расширения пользовательского интерфейса портала управления пакетаМи Azure.

В этих проектах контроллеры MVC на стороне сервера используются для взаимодействия с API управления службами. Исходные файлы контроллера:

Файл

Описание

HelloWorldAdminController.cs

Предоставляет доступ к конечной точке администратора поставщика ресурсов, AdminSettingsController.cs и другим пользователям в Microsoft.WAP.Samples.HelloWorld.API.

HelloWorldTenantController.cs

Предоставляет доступ к конечной точке клиента поставщика ресурсов FileShareController.cs в Microsoft.WAP.Samples.HelloWorld.API.

Оба контроллера используют HelloWorldClient.cs в Microsoft.WAP.Samples.HelloWorld.APIClient для маршрутизации вызовов через API управления службами в Hello World настраиваемый поставщик ресурсов.

Реализация конечной точки поставщика ресурсов

Четыре конечные точки REST реализуются как серверные контроллеры в примере проекта Hello World Microsoft.WAP.HelloWorld.API. Существует 7 контроллеров, представляющих конечные точки администратора и клиента. FileShareController.cs представляет конечную точку клиента, а другие — конечную точку администратора.

Трассировка Client-Side вызовов расширений пользователей к конечным точкам поставщика ресурсов

Процесс, с помощью которого действие пользователя портала управления на стороне клиента приводит к вызову одной из конечных точек поставщика ресурсов, как показано ниже. В этом примере клиент использует пользовательский портал управления для расширения пользовательского интерфейса клиентов для быстрого создания общей папки.

  1. Клиент выбирает быстрое создание общей папки. Обработано на стороне клиента в HelloWorldTenantController.js это приводит к вызову REST на стороне сервера вызова CreateFileShare в HelloWorldTenantController.cs

    public JsonResult CreateFileShare(string subscriptionId, FileShareModel fileShareToCreate)
        {
            this.apiClient.CreateFileShare(subscriptionId, fileShareToCreate.ToApiObject());
    
            return this.Json(fileShareToCreate);
        }
    
  2. CreateFileShare вызывает CreateFileShare в вспомогательном классе клиента API, определенном в HelloWorldClient.cs — Microsoft.WAP.Samples.HelloWorld.APIClient. Эта функция выполняет работу по созданию URI для вызова REST API создания клиента общей папки для поставщика ресурсов Hello World и выполнения вызова через API управления службами.

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

    Относительный путь для вызова REST общих папок определяется в HelloWorldClient.FileShares. Определение для всех относительных путей администратора и клиента находится в файле HelloWorldClient.cs.

  3. Чтобы создать полный URI, CreateRequestUri (HelloWorldClient) также требуется конечная точка API управления службами, полученная из 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 назначается в конструкторе класса HelloWorldClient, который создается в конструкторе класса HelloWorldTenantController. rdfeEndpoint — это конечная точка API управления службами.

    public HelloWorldTenantController()
        {
            // 
            var rdfeEndpoint = new Uri(AppManagementConfiguration.Instance.RdfeUnifiedManagementServiceUri);
    
            var handler = new BearerMessageProcessingHandler();
    
            this.apiClient = new HelloWorldClient(rdfeEndpoint, handler);           
        }    
    
  4. Призыв к этому. Post в CreateFileShare (HelloWorldClient.cs) отправляет вызов REST с соответствующим текстом запроса имени общей папки в API управления службами, который направляет вызов Hello World настраиваемого поставщика ресурсов.

  5. Конечная точка клиента пользовательского поставщика hello world получает вызов общей папки create в FileShareController.cs и выполняет соответствующее действие.

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

Регистрация поставщика ресурсов Hello World

Пример проекта Hello World Microsoft.WAP.Samples.HelloWorld.Setup предоставляет установщик и регистрацию для поставщика клиентов. Он описан при развертывании расширения портала управления пакета Azure Windows. В частности, связанная с регистрацией пользовательского поставщика ресурсов, регистрирует конечные точки с помощью Windows Azure Pack. В примере hello world используется скрипт Windows PowerShell (Register-ResourceProvider.ps1) для регистрации конечных точек настраиваемого поставщика ресурсов. Это дает Windows пакету Azure необходимые сведения для правильной передачи вызовов REST через API управления службами Hello World пользовательскому поставщику ресурсов. В скрипте Windows командлеты Azure Pack PowerShell выполняют регистрацию. Параметр rpSettings предоставляет необходимые сведения о конечной точке, используемые для регистрации конечных точек и других сведений о конфигурации.

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

См. также:

Windows настраиваемых поставщиков ресурсов Azure Pack