Навигация по образцу пользовательского поставщика ресурсов 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 управления службами от имени пользовательского интерфейса портала управления. Расширения пользовательского интерфейса администратора портала управления поставщиком ресурсов выражаются в виде представлений.
Расширения пользовательского интерфейса и контроллеры
Пример пользовательского интерфейса предоставляет расширения для портала управления для администраторов и портала управления для клиентов. Пользовательский интерфейс на основе 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 вызовов расширений пользователей к конечным точкам поставщика ресурсов
Процесс, с помощью которого действие пользователя портала управления на стороне клиента приводит к вызову одной из конечных точек поставщика ресурсов, как показано ниже. В этом примере клиент использует пользовательский портал управления для расширения пользовательского интерфейса клиентов для быстрого создания общей папки.
Клиент выбирает быстрое создание общей папки. Обработано на стороне клиента в HelloWorldTenantController.js это приводит к вызову REST на стороне сервера вызова CreateFileShare в HelloWorldTenantController.cs
public JsonResult CreateFileShare(string subscriptionId, FileShareModel fileShareToCreate) { this.apiClient.CreateFileShare(subscriptionId, fileShareToCreate.ToApiObject()); return this.Json(fileShareToCreate); }
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.
Чтобы создать полный 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); }
Призыв к этому. Post в CreateFileShare (HelloWorldClient.cs) отправляет вызов REST с соответствующим текстом запроса имени общей папки в API управления службами, который направляет вызов Hello World настраиваемого поставщика ресурсов.
Конечная точка клиента пользовательского поставщика 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'."