Статьи

Новый шаблон подключения в клиентских библиотеках PHP для Windows Azure

Сегодня команда Windows Azure выпустила обновление клиентских библиотек PHP для Windows Azure . Вы всегда можете увидеть, какая работа была проделана (и что запланировано ), посмотрев на репозиторий Github , но в итоге обновление включает в себя несколько мелких исправлений ошибок и изменение способа подключения к службе. Обратите внимание, что это изменение является критическим .

Что это за изменение?

Старый шаблон подключения

Ранее подключение к службе Windows Azure (службе хранения или службе служебной шины) выполнялось с использованием объекта конфигурации . В следующем примере показан старый шаблон для создания объекта конфигурации, используемого для подключения к службе Blob.

use WindowsAzure\Common\Configuration;

use WindowsAzure\Blob\BlobService;

use WindowsAzure\Blob\BlobSettings;

 

$config = new Configuration();

$config->setProperty(BlobSettings::ACCOUNT_NAME, $storage_account_name);

$config->setProperty(BlobSettings::ACCOUNT_KEY, $storgae_account_key);

$config->setProperty(BlobSettings::URI, $storage_account_URI);

 

$blobRestProxy = BlobService::create($config);

Новый шаблон подключения

Новый шаблон подключения проще и включает в себя использование ODBC-подобной строки подключения и нового класса фабрики ServiceBuilder . Формат строки подключения для служб Blob, Table и Queue:

DefaultEndpointsProtocol=[http | https];AccountName=<your storage account name>;AccountKey=<your storage account key>

Для сервисов Service Bus Queues и Service Bus Topics формат строки подключения следующий:

Endpoint=[yourEndpoint];SharedSecretIssuer=[yourWrapAuthenticationName];SharedSecretValue=[yourWrapPassword]

Примечание . Конечная точка обычно имеет следующий формат: https: // [yourNamespace] .servicebus.windows.net .

После создания строки подключения вы можете создать прокси-объект rest, как показано в примере ниже (который использует службу Blob, но код других служб аналогичен).

use WindowsAzure\Common\ServicesBuilder 

$conn_string = "DefaultEndpointsProtocol=http;AccountName=myaccountname;AccountKey=A4HlJzOy156Q6Y+ty6AAXqULxhUeQ+bVP8sjHTX1+wwKBjP+cBcyBrAmGGG6tEFgg8cKNciU/+xG7afG4JNiNw==";

$blobRestProxy = ServicesBuilder::getInstance()->createBlobService($conn_string);

Для получения дополнительной информации (и примеров) об использовании сервисов хранилища или сервисной шины см. PHP Developer Center — How To Guides.

Одна важная функция, встроенная в это изменение, — это возможность хранить строки подключения в любом месте. По умолчанию SDK настроен на поиск строк подключения, которые хранятся в переменной среды. Строка подключения находится с помощью статического метода getConnectionString в классе CloudConfigurationManager . Например, предположим, что вы сохранили строку подключения в переменной среды с именем AZURE_STORAGE_CONN_STRING. Затем вы можете создать прокси-объект rest, подобный этому (опять же, используя сервис Blob в качестве примера):

use WindowsAzure\Common\ServicesBuilder;
use WindowsAzure\Common\CloudConfigurationManager;
 

$conn_string = CloudConfigurationManager::getConnectionString('AZURE_STORAGE_CONN_STRING');
 

$blobRestProxy = ServicesBuilder::getInstance()->createBlobService($conn_string);

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

CloudConfigurationManager::registerSource(
       'my_source',
       function ($key) use ($expectedKey, $expectedValue)
       {
           if ($key == $expectedKey) {
               return $expectedValue;
           }
       }
);

Вы можете удалить источники, используя метод CloudConfigurationManager :: unRegisterSource .

Почему изменения?

Основная причина внесения этих изменений заключается в большей гибкости при разработке приложений. Возможность хранить строки подключения в переменных среды (или других источниках) сама по себе повышает гибкость, но также облегчает создание защищенных приложений, позволяя легко хранить учетные данные вне кода приложения. И, переключившись на подход на основе строки подключения, вы можете использовать явные конечные точки для служб Blob, Table и Queue (подробности здесь: Конфигурирование строк подключения ). Например, вы можете использовать строку подключения, как показано ниже:

BlobEndpoint=myBlobEndpoint;QueueEndpoint=myQueueEndpoint;TableEndpoint=myTableEndpoint;AccountName=myAccountName;AccountKey=myAccountKey

Кроме того, вы с этим изменением можете расширить класс ServicesBuilder для создания пользовательского класса компоновщика. Например, вы можете создать MyServicesBuilder, который переопределяет только метод createBlobService, так что ведение журнала включено.

Наконец, это изменение приносит в PHP SDK те же шаблоны подключения, которые используются в SDK для других языков . Это (надеюсь) облегчает создание приложений Azure при переходе с языка на язык (что сегодня кажется все более распространенным).

Что если я захочу продолжить использовать старый шаблон?

Если у вас есть код, который использует старый шаблон подключения, вам потребуется использовать версии клиентских библиотек PHP для Windows Azure версии 0.1.0 или 0.2.0. Начиная с версии 0.3.0 (сегодняшняя версия) библиотеки будут поддерживать только новый шаблон подключения, описанный выше. Вы можете указать, какую версию вы хотите установить при установке библиотек с помощью Composer или PEAR. Следующие шаги показывают, как указать версию 0.2.0 при установке через Composer или PEAR.

Примечание . В приведенных ниже инструкциях показано, как получить старую версию клиентских библиотек. Если вам нужна последняя версия (с новым шаблоном подключения), замените 0.2.0 на 0.3.0 .

Установить через Composer

1. Установите Git .

Примечание . В Windows вам также необходимо добавить исполняемый файл Git в переменную среды PATH.

2. Создайте файл с именем composer.json в корне вашего проекта и добавьте в него следующий код:

{ 
 "require": { 
 "microsoft/windowsazure": "0.2.0" 
 }, 
 "repositories": [ 
 { "type": "pear", "url": "http://pear.php.net" } 
 ] 
 }

3. Загрузите composer.phar в корневой каталог вашего проекта.

4. Откройте командную строку и выполните это в корне вашего проекта

		php composer.phar install
Установить как пакет PEAR

Чтобы установить клиентские библиотеки PHP для Windows Azure в виде пакета PEAR, выполните следующие действия.

  1. Установите грушу .
  2. Настройте канал Windows Azure PEAR:

    pear channel-discover pear.windowsazure.com
  3. Установите пакет PEAR:

    pear install pear.windowsazure.com/WindowsAzure-0.2.0

Как всегда, присылайте нам свои отзывы в виде комментариев ниже или в Windows Azure SDK для PHP-репозитория на Github .