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


Удаленные задания таймера в модели надстроек SharePoint

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

В сценарии модели надстройки SharePoint задания таймера создаются и планируются за пределами SharePoint. SharePoint не несет ответственности за планирование или выполнение задания таймера в этом сценарии.

Рекомендации высокого уровня

Как правило, мы хотели бы предоставить следующие общие рекомендации по созданию заданий таймера.

  • Задания таймера должны реализовываться за пределами SharePoint.
  • Планирование заданий таймера должно реализовываться за пределами SharePoint.
  • Проверка подлинности заданий таймера должна выполняться через учетную запись службы или OAuth.

Проблемы, связанные с созданием заданий таймера

Самая большая проблема, связанная с созданием заданий таймера в Office 365 клиентах, заключается в том, что вы не можете развертывать решения в области фермы в Office 365 клиенте. Без решения с областью фермы невозможно развернуть задание таймера SharePoint.

Новый способ создания задания таймера заключается в его сборке за пределами SharePoint, а также для обработки планирования за пределами SharePoint. Учитывайте следующие факторы, связанные с заданиями таймера SharePoint для локальной среды SharePoint.

  • SharePoint поставляется с сотнями встроенных заданий таймера, с которыми планировщик SharePoint изо всех сил пытается испевать. ОК. Вы можете уменьшить объем памяти и мощности процессора, необходимые на сервере SharePoint, переместив код реализации в Azure или другую среду.
  • Перемещение кода планирования и реализации, связанных с заданиями таймера, на другой сервер Делает сервер SharePoint более масштабируемым и стабильным.

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

У вас есть несколько вариантов реализации планирования задания таймера.

  • Планировщик Windows
    • Служба Windows
  • Веб-задание Azure
    • Рабочий процесс Azure

Планировщик Windows

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

Параметр "Вложенная служба Windows"

Служба Windows имеет те же характеристики, что и планировщик Windows. Корпорация Майкрософт не рекомендует этот шаблон, но его стоит упомянуть, так как он часто используется.

Когда лучше подходит планировщик Windows?

Если у вас нет доступа к подписке Azure для планирования заданий таймера с помощью веб-заданий Azure, рекомендуется использовать планировщик Windows, так как этот параметр может быть реализован на любом компьютере с операционной системой Windows.

  • Требуется дополнительное оборудование для запуска планировщика Windows.
  • Требуется дополнительное оборудование для выполнения кода задания таймера.

Начало работы

В следующих статьях используется шаблон планировщика Windows и приводятся примеры кода для начала работы.

  • Core.SimpleTimerJob (пример PnP O365)
    • Сквозная статья об этом шаблоне с сопроводительным видео.
  • Core.TimerJobs.Samples (пример O365 PnP)
    • Отличные примеры кода, охватывающие 10 различных примеров. Примечание. Не все десять примеров кода применимы к шаблону планировщика Windows.

Веб-задание Azure

В этом шаблоне веб-задания Azure отвечают за аспекты планирования, связанные с заданием таймера, и содержат код реализации.

  • Не требуется дополнительное оборудование для запуска веб-задания Azure (планирование и код реализации).
  • Удобно, поскольку для планирования, а также кода реализации используется веб-задание Azure, что упрощает управление в одном месте.

Параметр sub worker role (вложенная рабочая роль Azure)

Рабочая роль Azure имеет те же характеристики, что и веб-задание Azure. Корпорация Майкрософт не рекомендует этот шаблон, но его стоит упомянуть, так как он часто используется.

Когда хорошо подходит веб-задание Azure?

Если у вас есть доступ к подписке Azure для планирования заданий таймера с помощью веб-заданий Azure.

Приступая к работе

В следующих статьях описывается шаблон веб-задания Azure и приведены примеры кода для начала работы.

  • Начало работы с веб-заданиями Azure для сайтов Office 365
    • Описывается создание веб-задания Azure в качестве запланированного задания для Office 365 или локальной среды SharePoint. Включает сведения о публикации и мониторинге.
  • Core.SimpleTimerJob (пример PnP O365)
    • Отличные примеры кода, охватывающие 10 различных примеров. Примечание. Не все десять примеров кода применимы к шаблону веб-задания Azure.

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

Чтобы задания таймера взаимодействовали с SharePoint, они должны пройти проверку подлинности. В настоящее время существует два шаблона, которые можно использовать для проверки подлинности заданий таймера.

  • Использование учетной записи службы
  • Использование OAuth

Использование учетной записи службы

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

  • Учетные записи служб определяются в SharePoint.

    • В Office 365 клиенте в зависимости от функциональности заданий таймера учетным записям служб может потребоваться Office 365 лицензия.
    • Вы можете создавать учетные записи служб на основе каждого задания таймера или использовать одну учетную запись для всех заданий таймера.
    • Создавайте понятные имена для учетных записей служб, чтобы легко отслеживать выполняемые ими операции.

    Например, если задание таймера изменяет элементы списка, в столбце Изменено для элементов списка будет отображаться имя учетной записи службы, связанной с заданием таймера.

  • При проверке подлинности с помощью учетных записей служб необходимо получить имя пользователя и пароль для учетной записи службы.

    • В представленном ниже фрагменте кода показано использование имени пользователя и пароля для проверки подлинности.

    • Храните и извлекайте имя пользователя и пароль безопасным способом.

      using (ClientContext context = new ClientContext("https://tenancy.sharepoint.com"))
      {
        // Use default authentication mode
        context.AuthenticationMode = ClientAuthenticationMode.Default;
        // Specify the credentials for the account that will execute the request
        context.Credentials = new SharePointOnlineCredentials("User Name", "Password");
      }
      

Приступая к работе

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

Использование OAuth

В этом шаблоне вы определяете приложение в SharePoint или Azure Active Directory и используете маркеры проверки подлинности, связанные с приложением, для проверки подлинности.

  • При использовании приложения SharePoint для проверки подлинности вы создаете субъект приложения и назначаете ему разрешения.

    • В этом шаблоне задания таймера можно реализовать с помощью надстройки SharePoint, размещенной у поставщика, или консольного приложения.
    • Чтобы зарегистрировать субъект приложения для размещаемой у поставщика надстройки Или консольного приложения SharePoint, используйте страницу AppRegNew в SharePoint.

    Доступ к этой странице осуществляется по следующему URL-адресу: http://<tenancy>/<site>/_layouts/AppRegNew.aspx

    • Чтобы предоставить разрешения субъекту приложения, используйте страницу AppInv в SharePoint.

    Доступ к этой странице осуществляется по следующему URL-адресу: http://<tenancy>/<site>/_layouts/AppInv.aspx

  • Задания таймера используют разрешения только для приложений, так как с ними не связан интерактивный пользователь.

    • В приведенном ниже фрагменте кода показано, как получить маркер доступа и использовать разрешения только приложения для проверки подлинности в SharePoint.

      string accessToken = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, siteUri.Authority, realm).AccessToken;
      
      using(var clientContext = TokenHelper.GetClientContextWithAccessToken(siteUri.ToString(),accessToken))
      {
        //Implement timer job code
      }
      
  • При использовании приложения Azure Active Directory для проверки подлинности вы создаете приложение Azure Active Directory в портал Azure и назначаете ему разрешения.

    • В этом шаблоне задания таймера можно реализовать с помощью надстройки SharePoint, размещенной у поставщика, или консольного приложения.
    • В этом шаблоне вы взаимодействуете с библиотекой проверки подлинности Active Directory или microsoft API Graph для получения маркера доступа.
    • Маркер доступа используется для проверки подлинности в SharePoint (и, возможно, в других службах Office 365 в клиенте Office 365).

Начало работы

В следующих статьях описывается шаблон проверки подлинности OAUth и приведены примеры кода для начала работы.

Образцы PnP

Область применения

  • Office 365 Multi Tenant (MT)
  • Office 365 Dedicated (D) частично
  • Локальная среда SharePoint 2013 — частично

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