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


Примеры файлов ядра ядра адаптера выставления счетов

 

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

Пример адаптера выставления счетов Windows Пакета Azure состоит из ядра адаптера выставления счетов и системного кода для взаимодействия с определенной системой выставления счетов. Примеры файлов находятся в папке выставления счетов. В этом разделе рассматривается пример исходного кода проекта ядра ядра адаптера выставления счетов. Примеры файлов ядра модуля адаптера выставления счетов находятся в папке BillingAdapter\Billing в пакете примеров Windows Пакета Azure Pack. Сведения о примере исходного кода конкретной системы см. в разделе "Сведения о конкретных файлах для адаптера выставления счетов".

BillingAdapter

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

Четыре интерфейса:

  • IBillingNotificationProcessor

  • IBillingUsageProcessor

  • IBillingSubscriptionResponder

  • IBillingPricingResponder

Интерфейс

Описание

Исходный файл

Обработчик уведомлений о выставлении счетов

Предоставляет строго типизированные события, соответствующие событиям API службы использования пакета Azure Windows. Реализуйте этот интерфейс, если вы хотите получать уведомления о событиях от Windows Azure Pack и синхронизировать их с системой выставления счетов. К событиям относятся план, надстройки и изменения подписки.

Дополнительные сведения об REST API службы использования см. в Windows справочнике по REST API использования службы использования пакета Azure.

IBillingNotificationProcessor.cs

Отвечающее за выставление счетов

Этот интерфейс включает строго типизированные события для реагирования на запросы цен в режиме реального времени. Реализуйте этот интерфейс, если вы хотите вернуть сведения о ценах из системы выставления счетов в Windows Azure Pack. Пример реализации этого интерфейса можно найти в примере HostBill. Дополнительные сведения о rest API ценообразования см. в Windows справочнике по REST API службы использования пакета Azure.

IBillingPricingResponder.cs

Респондент подписки на выставление счетов

Этот интерфейс включает строго типизированные события для реагирования на блокировку запросов на утверждение выставления счетов. Реализуйте этот интерфейс, если ваша система выставления счетов включает логику утверждения или запрета пользователю, создающего или удаляющего подписки плана и подписок на надстройки. Дополнительные сведения об REST API утверждения выставления счетов см. в Windows справочнике по REST API для утверждения выставления счетов для службы выставления счетов azure Pack.

IBillingSubscriptionResponder.cs

Обработчик использования выставления счетов

Предоставляет строго типизированные события для получения записей об использовании клиента. Реализуйте этот интерфейс для получения агрегированных сведений об использовании клиента для всех поставщиков ресурсов azure Pack Windows.

Дополнительные сведения об REST API использования данных поставщика ресурсов см. в Windows справочнике по REST API пользовательского поставщика ресурсов Azure Pack.

IBillingUsageProcessor.cs

Контроллеры

Ядро адаптера выставления счетов предоставляет два субдвижка (отвечающее за выставление счетов и ответчик подписки на выставление счетов) для прослушивания входящих запросов из системы Windows Azure Pack. Эти запросы обрабатываются контроллерами веб-API в папке Controllers. Эти контроллеры преобразуют входящие запросы REST в строго типизированные события и отправляют их в соответствующую реализацию интерфейса (IBillingSubscriptionResponder и IBillingPricingResponder).

Уведомление о событиях и обработка записей об использовании

Каждый из них является планировщиком, который периодически просыпается и запрашивает Windows системе Azure Pack для получения новых сведений, преобразовав их в строго типизированные события и вызывая соответствующее событие в соответствующем интерфейсе (IBillingNotificationProcessor или IBillingUsageProcessor). Оба планировщика выполняют аналогичную логику:

  1. Убедитесь, что текущий процессор в настоящее время является главным. В противном случае они спят в течение предопределенного времени. Дополнительные сведения см. в разделе app.config.

  2. Получение текущего состояния из хранилища состояний.

  3. Чтение новых событий из системы Windows Azure Pack.

  4. Преобразуйте события в строго типизированные события и вызовите реализацию интерфейса для конкретной системы.

  5. Обработка ошибок.

Отвечающее за выставление счетов

Чтобы сообщить об ошибках из реализации IBillingPricingResponder, предоставляются два объекта исключений: PricingNotFoundException и PricingUnknownException, которые можно использовать для указания того, что запрошенный продукт не найден или нет сведений о ценах для этого продукта.

Конфигурация

Адаптер выставления счетов использует файл app.config для изменения параметров адаптера выставления счетов. После успешной сборки файл app.config будет помещен рядом с исполняемым файлом адаптера выставления счетов, а файл переименован так же, как и исполняемый файл адаптера выставления счетов с дополнительным суффиксом .config (например, Microsoft.WindowsAzurePack.Samples.Billing.exe.config). Для изменения этого файла требуется перезапустить процесс адаптера выставления счетов.

Примечание

Файл app.config содержит параметры для ядра адаптера выставления счетов и реализации конкретной системы. Если вы предоставляете собственную реализацию для конкретной системы, вы можете сохранить параметры конкретной системы в другом месте.

Ниже описаны параметры в файле app.config:

Служебные программы — App.Config

Файл app.config содержит поля, которые можно изменить при необходимости для адаптера выставления счетов и Windows развертывания Пакета Azure. Изменения полей следует вносить после компиляции и перед запуском двоичного файла. Ниже описаны ключевые поля.

<connectionStrings>

Строки подключения для баз данных, используемых адаптером выставления счетов. Строка подключения StateManage используется ядром адаптера выставления счетов для хранения внутреннего состояния. Строка подключения IdentityMappingManager используется реализацией конкретной системы для хранения сопоставления между удостоверениями Windows Пакета Azure и удостоверениями системы выставления счетов. Если вы предоставляете собственную реализацию для конкретной системы, возможно, вам не потребуется эта база данных.

<appSettings>

Раздел appSettings содержит параметры ядра адаптера выставления счетов и реализации конкретной системы. Параметры группируются на основе их префикса и управляют различными вложенными подсистемами.

Ниже приведены параметры сборки адаптера выставления счетов.

Параметр

Описание

BillingAdapter.Assembly

Сборка адаптера выставления счетов, содержащая реализацию конкретной системы.

BillingAdapter.Type

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

Ниже приведены параметры приложения для обработчика уведомлений о выставлении счетов:

Параметр приложения

Описание

NotificationProcessor.Enabled

Задайте значение true, если реализуется интерфейс NotificationProcessor; это позволит планировщику обработчика уведомлений.

NotificationProcessor.EndpointBaseAddress

Универсальный код ресурса (URI) конечной точки REST уведомления о событиях azure Pack Windows. Обработчик уведомлений о событиях будет использовать эту конечную точку для чтения уведомлений о событиях из системы Windows Azure Pack.

NotificationProcessor.EndpointUsername, NotificationProcessor.EndpointPassword

Имя пользователя и пароль для конечной точки уведомления о событиях пакета Azure Windows. Обработчик уведомлений о событиях будет использовать эти учетные данные при чтении событий из конечной точки уведомления о событиях WAP.

NotificationProcessor.ReadBatchSize

Максимальный размер пакета, который будет использоваться при чтении уведомлений о событиях из конечных точек уведомлений о событиях Windows Пакета Azure. Если возникают проблемы с производительностью сети, рассмотрите возможность изменения этого значения.

NotficationProcessor.PollingIntervalSeconds

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

NotificationProcessor.ErrorBackoffIntervalSeconds

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

NotificationProcessor.IsMasterExpirationInSeconds

На всех процессах и компьютерах может выполняться только один экземпляр планировщика. Этот планировщик называется главным. Если экземпляр планировщика выбран для главного экземпляра, он сохраняет связь с базой данных состояния. Если база данных master не проверяет связь дольше, чем это значение, другой экземпляр планировщика попытается стать главным. Главный экземпляр запрашивает связь с базой данных состояния только во время обработки планировщика (она не выполняет проверки связи во время спящего режима планировщика), поэтому рекомендуется, чтобы это значение было несколько раз больше максимального возможного времени сна для планировщика, что является максимальным значением NotficationProcessor.PollingIntervalSeconds и NotificationProcessor.ErrorBackoffIntervalSeconds. Установка этого значения слишком долгого периода приведет к замедлению отработки отказа главного узла.

Ниже приведены параметры приложения для обработчика использования выставления счетов:

Параметр приложения

Описание

UsageProcessor.Enabled

Задайте значение true, если реализуется интерфейс UsageProcessor; это позволит планировщику для обработчика использования выставления счетов.

UsageProcessor.EndpointBaseAddress

Конечная точка, используемая Windows Azure Pack для выполнения вызовов REST API. Пример .config файла имеет значение по умолчанию, но необходимо указать собственный сервер конечной точки.

UsageProcessor.EndpointUsername, UsageProcessor.EndpointPassword

Имя пользователя и пароль для конечной точки Windows использования пакета Azure. Обработчик использования будет использовать эти учетные данные при чтении событий из конечной точки Windows использования пакета Azure.

UsageProcessor.ReadBatchSize

Максимальный размер пакета, который будет использоваться при чтении уведомлений о событиях из конечных точек уведомлений о событиях Windows Пакета Azure. Если возникают проблемы с производительностью сети, рассмотрите возможность изменения этого значения.

UsageProcessor.PollingIntervalSeconds

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

UsageProcessor.ErrorBackoffIntervalSeconds

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

UsageProcessor.IsMasterExpirationInSeconds

На всех процессах и компьютерах может выполняться только один экземпляр планировщика. Этот планировщик называется главным. Если экземпляр планировщика выбран для главного экземпляра, он сохраняет связь с базой данных состояния. Если база данных master не проверяет связь дольше, чем это значение, другой экземпляр планировщика попытается стать главным. Главный экземпляр запрашивает связь с базой данных состояния только во время обработки планировщика (она не выполняет проверки связи во время спящего режима планировщика), поэтому рекомендуется, чтобы это значение было в несколько раз больше максимального возможного времени сна для планировщика, что является максимальным значением UsageProcessor.PollingIntervalSeconds и UsageProcessor.ErrorBackoffIntervalSeconds. Установка этого значения слишком долгого периода приведет к замедлению отработки отказа главного узла.

Ниже приведены параметры, применяемые ко всем респондентам:

Параметр приложения

Описание

Responders.EndpointBaseAddress

Локальный базовый адрес конечных точек респондентов. Адаптер выставления счетов создаст прослушиватель, используя этот базовый адрес. Одна и та же базовая конечная точка используется для обоих респондентов (подсистема адаптера выставления счетов добавит разные пути для каждого респондента). Если используется протокол HTTPS, необходимо настроить SSL-сертификат на том же порту. Для получения дополнительной информации см. https://msdn.microsoft.com/en-us/library/ms733791(v=vs.110).aspx.

Responders.EndpointUsername, Responders.EndpointPassword

Базовые учетные данные проверки подлинности для конечной точки респондентов.

Responders.Notification.Enabled

Задайте значение true, чтобы активировать ответчик подписки (API утверждения выставления счетов). Реализация адаптера выставления счетов, зависящей от системы, должна реализовывать интерфейс IBillingSubscriptionResponder.

Responders.Pricing.Enabled

Задайте значение true, чтобы активировать респондента с ценами (API ценообразования). Реализация адаптера выставления счетов, зависящей от системы, должна реализовывать интерфейс IBillingPricingResponder.

Ниже приведены параметры приложения адаптера выставления счетов.

Параметр приложения

Описание

BillingAdapter.Assembly

Путь к адаптеру выставления счетов.

BillingAdapter.Type

Путь к адаптеру выставления счетов. Если приведенный здесь код не соответствует значениям, заданным для значений Enable в app.config, при выполнении будет ошибка.

Например, указанный app.config содержит параметр заполнителя для систем выставления счетов WHMCS и HostBill. В рабочем развертывании не обязательно иметь оба варианта. Следует сохранить параметры, соответствующие реализации адаптера выставления счетов. Если вы реализуете собственный адаптер, вы можете решить, есть ли параметры в app.config или в другом месте (например, в базе данных).

Ниже приведены некоторые параметры, которые следует заметить.

Параметр приложения

Описание

WHMCS. ExpectedVersion / HostBill.ExpectedVersion

Обязательное поле. Подсистема адаптера выставления счетов сравнивает это значение версии с настроенной версией системы выставления счетов. Если они не совпадают, это приведет к ошибке и предотвратит запуск адаптера. Эта проверка предназначена для предотвращения работы адаптера выставления счетов в системе выставления счетов без тестирования.

WHMCS. MySqlConnectionString / HostBill.MySqlConnectionString

Строка подключения (с разрешениями на запись) в базу данных MySql системы выставления счетов. Она используется реализацией адаптера для обновления базы данных системы выставления счетов напрямую, если не существует соответствующего вызова API.

WHMCS. EndpointUsername, WHMCS EndPointPassword

Имя пользователя и пароль конечной точки WHMCS.

HostBill.ApiId, HostBIll.ApiKey

Идентификатор HostBill и ключ API.

WHMCS. ProductGroupName, HostBill.CategoryName

Планы создаются в группе\категории в системах выставления счетов. Это значение указывает используемую группу\категорию. Перед запуском процесса адаптера выставления счетов необходимо создать группу\категорию (созданную вручную).

WHMCS. DefaultCurrencyCode

Задает код валюты по умолчанию для WHMCS при создании новых заказов на подписку.

WHMCS. DefaultPaymentModule / HostBill.DefaultPaymentModule

WHMCS. DefaultPaymentMethodModule \ HostBill.DefaultPaymentModule. Указывает метод оплаты по умолчанию, используемый при размещении новых заказов на подписку.

WHMCS. DefaultBillingCycle / HostBill.DefaultBillingCycle

Указывает цикл выставления счетов по умолчанию для новых заказов на подписку, если он не определен в параметрах пользователя.

WHMCS. EnableUserCreation / HostBill.EnableUserCreation

В рабочих средах все Windows пользователей Azure Pack должны существовать в системе выставления счетов. Однако в сценариях тестирования может быть полезно создавать пользователей на лету, если они не существуют в системе выставления счетов. Если задано значение True, если пользователь не существует в системе выставления счетов, он будет автоматически создан при получении события подписки из Windows Azure Pack.

WHMCS. EnableOrderMailConfirmation

Задайте значение true, чтобы отправить подтверждение электронной почты при создании подписки.

Примечание

В примере адаптера выставления счетов значение EnableUserCreation имеет значение True, адаптер выставления счетов создаст учетные записи пользователей в системе выставления счетов по мере обработки событий из Windows Azure Pack. Если значение равно False, операции будут отклонены, если они отправляются через API в режиме реального времени, и приостанавливает обработку, если они находятся в REST API.

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

Чтобы сделать пример адаптера выставления счетов работой "нестандартного" этот параметр предоставляется для создания учетных записей пользователей в качестве примеров событий процессов. Учетные записи создаются только с адресом электронной почты. Все остальные поля пусты.

См. также:

Пример адаптера выставления счетов