Создание службы данных OData для использования в качестве внешней системы BCS

Узнайте, как создать интернет-адресуемую службу WCF, которая использует OData для отправки уведомлений в SharePoint при изменении базовых данных. Эти уведомления используются для запуска событий, которые прикреплены ко внешним спискам.

В этой статье описывается создание ASP.NET Windows Communication Foundation (WCF) службе данных предоставлять образца базы данных AdventureWorks LT 2012 г. Это позволяет получать доступ к данным посредством протокола Open Data protocol (OData). При настройке доступа с помощью OData можно настроить внешний тип Business Connectivity Services (BCS), который позволит SharePoint использовать данные из внешней базы данных. Для дальнейшего улучшения этого источника OData, можно добавить контракты службы WCF службу, которая позволит BCS для подписки на уведомления, оповещающие об изменении внешних данных.

Необходимые условия для создания службы OData

Создание службы OData в этой статье необходимо соблюдение следующих условий:

Сведения о настройке среды разработки см. в общих средах разработки для SharePoint.

Основные понятия, которые создания службы OData

В таблице 1 приведены статьи, которые помогут вам понять основные концепции создания WCF службы с помощью OData и внешнее содержимое.

В таблице 1. Основные понятия, которые создания службы OData

Ресурс Описание
Использование источников OData со службами Business Connectivity Services в SharePoint
Предоставляет сведения, которые помогут вам приступить к созданию внешних типов контента на основе источников OData и использованию этих данных в SharePoint или Office 2013 г.
Как: создать внешний тип контента из источника OData в SharePoint
Узнайте, как использовать Visual Studio 2012 г. для обнаружения опубликованного источника OData и создания повторного внешнего типа контента, который будет BCS в SharePoint.
Open Data Protocol
Предоставляет сведения о протокола Open Data protocol, включая определения протокола, сведения о структуре и примеры их использования.
Обзор служб данных WCF
WCF Службы данных включает создание и использование служб данных для веб-сайта или в интрасети с помощью OData. OData позволяет предоставлять данные как ресурсы, которые являются адресации с помощью URI.
Разработка и развертывание служб данных WCF
Предоставляет сведения о разработке и развертывании WCF службы данных.

Действия для создания внешней системы

Необходимо выполнить следующие действия

  • Установка образца базы данных AdventureWorks LT 2012 г.

  • Создание службы OData

  • Настройка разрешений на доступ

  • Тестирование службы

  • Добавление возможности для дополнительные функциональные возможности BCS

Установка образца базы данных

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

Следующие шаги будут

Как создать WCF службы OData

Создание службы Windows Communication Foundation (WCF), который может осуществляться через протокол OData относительно несложно. Visual Studio 2012 предоставляет несколько средств для автоматического обнаружения и моделирование данных из различных источников данных. Это позволяет создавать подключения и интерфейсы к данным в базах данных SQL Server и другие типы хранилищ данных, которые можно работать с программным путем с помощью обширную объектную модель.

Однако для SharePoint, чтобы BCS получать уведомления из удаленных систем при изменении данных, необходимо изменить службу WCF для реагирования на эти изменения.

Чтобы создать проект на основе WCF

  1. В Visual Studio, в меню файл выберите Создать, проект.

  2. В диалоговом окне Создать проект выберите веб- шаблон и выберите Веб-приложение ASP.NET.

  3. Введите AdventureWorksService для имени проекта и нажмите кнопку ОК.

  4. В Окне Обозреватель решений откройте контекстное меню для проекта ASP.NET, который вы только что создали и выберите пункт Свойства.

  5. Перейдите на вкладку Web и установите значение текстовое поле конкретных портов 8008.

Чтобы определить модели данных

  1. В Обозревателе решений откройте контекстное меню для проекта ASP.NET и выберите команду Добавить новый элемент.

  2. В диалоговом окне Добавление нового элемента выберите шаблон данных и выберите Модель данных ADO.NET сущности.

  3. Имя модели данных введите AdventureWorks.edmx.

  4. В окне Мастера модели данных сущности выберите Создать из базы данных и нажмите кнопку Далее.

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

  • Если у вас уже настроено подключение к базе данных, выберите Новое подключение и создайте новое подключение.

  • При наличии подключения к базе данных, уже настроена для подключения к базе данных Northwind, выберите это подключение в списке подключения.

  • На последней странице мастера установите флажки для всех таблиц в базе данных и снимите флажки для представлений и хранимых процедур.

  1. Нажмите кнопку Готово, чтобы закрыть мастер.

Чтобы создать службу данных

  1. В Обозревателе решений откройте контекстное меню для проекта ASP.NET и выберите команду Добавить новый элемент.

  2. В диалоговом окне Добавление нового элемента выберите Службы данных WCF.

  3. Имя службы введите AdventureWorks.

    Visual Studio создает XML-файлы разметки и кода для новой службы. По умолчанию откроется окно Редактор кода. В Окне Обозреватель решений, служба будет иметь имя AdventureWorks с расширением. svc.cs или. svc.vb.

  4. Замените комментарий /* TODO: put your data source class name here */ в определение класса, который определяет службу данных с типом, который является контейнером сущностей в модели данных, который в данном случае является AdventureWorksEntities. Определения класса должен выглядеть следующим образом:

  
public class AdventureWorks : DataService<AdventureWorksEntities>

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

Чтобы разрешить доступ к ресурсам службы данных

  • В коде для службы данных замените заполнитель код в функцию InitializeService следующее.
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);

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

Примечание

[!Примечание] Каждый клиент, который можно получить доступ к приложению ASP.NET также можно получить доступ к ресурсы, предоставляемые службой данных. В службе данных рабочей для предотвращения несанкционированного доступа к ресурсам, вам следует также защитить само приложение. Обеспечение безопасности служб данных WCFДополнительные сведения см.

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

На последнем этапе Создание службы является добавление операции службы для Subscribe и Unsubscribe стереотипов, определенных в модели BDC.

Чтобы добавить операции службы для подписки на и отписаться стереотипов

  • На странице AdventureWorks.cs добавьте следующее объявление переменной строки.
public string subscriptionStorePath = @"\\\\[SHARE_NAME]\\SubscriptionStore\\SubscriptionStore.xml";

Примечание

[!Примечание] Этот файл находится XML-файл, который обновляется с помощью новых подписок. Доступ к этому разделу будет выполнена процессом сервера, убедитесь, что вы предоставили недостаточно прав для доступа к этот файл.> Можно также создать решение базы данных для хранения сведений о подписке.

Добавьте следующие два метода WebGet для обработки подписки.

[WebGet]
public string Subscribe(string deliveryUrl, string eventType)
{
    string subscriptionId = Guid.NewGuid().ToString();

    XmlDocument subscriptionStore = new XmlDocument();

    subscriptionStore.Load(subscriptionStorePath);

    // Add a new subscription element.
    XmlNode newSubNode = subscriptionStore.CreateElement("Subscription");

    // Add subscription ID element to the subscription element.
    XmlNode subscriptionIdStart = subscriptionStore.CreateElement("SubscriptionID");
    subscriptionIdStart.InnerText = subscriptionId;
    newSubNode.AppendChild(subscriptionIdStart);

    // Add delivery URL element to the subscription element.
    XmlNode deliveryAddressStart = subscriptionStore.CreateElement("DeliveryAddress");
    deliveryAddressStart.InnerText = deliveryUrl;
    newSubNode.AppendChild(deliveryAddressStart);

    // Add event type element to the subscription element.
    XmlNode eventTypeStart = subscriptionStore.CreateElement("EventType");
    eventTypeStart.InnerText = eventType;
    newSubNode.AppendChild(eventTypeStart);

    // Add the subscription element to the root element. 
    subscriptionStore.AppendChild(newSubNode);

    subscriptionStore.Save(subscriptionStorePath);

    return subscriptionId;
}

[WebGet]
public void Unsubscribe(string subscriptionId)
{
    XmlDocument subscriptionStore = new XmlDocument();
    subscriptionStore.Load(subscriptionStorePath);

    XmlNodeList subscriptions = subscriptionStore.DocumentElement.ChildNodes;
    foreach (XmlNode subscription in subscriptions)
    {
        XmlNodeList subscriptionList = subscription.ChildNodes;
        if (subscriptionList.Item(0).InnerText == subscriptionId)
        {
            subscriptionStore.DocumentElement.RemoveChild(subscription);
            break;
        }
    }

    subscriptionStore.Save(subscriptionStorePath);
}

Дальнейшие действия

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

См. также