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


Создание сборок подключения .NET и веб-служб

Дата последнего изменения: 6 июля 2010 г.

Применимо к: SharePoint Server 2010

В этой статье
Рекомендации по проектированию
Этапы реализации
Определение в службе стереотипных операций
Рекомендации по написанию сборок подключения .NET и веб-служб

Службы Microsoft Business Connectivity Services (BCS) позволяют переносить данные из внешних систем в приложения Microsoft SharePoint 2010 и Microsoft Office 2010. Поддерживаются различные типы внешних систем, в том числе следующие:

  • базы данных;

  • веб-службы.

Если внешняя система не поддерживается в Business Connectivity Services напрямую, для ее подключения к Business Connectivity Services необходимо написать программный код. Если сущности во внешней системе являются статическими, редко изменяются и используют небольшой набор известных типов, то для предоставления данных из внешней системы в формате, поддерживаемом службами Business Connectivity Services, рекомендуется создать веб-службу или сборку подключения .NET. С другой стороны, если сущности являются динамическими, работают с настраиваемыми типами и имеют большой размер, для такого типа источника данных рекомендуется создать настраиваемый соединитель. При этом для настраиваемого соединителя потребуется реализовать возможности подключения, передачи данных, установки и необходимые средства. Дополнительные сведения см. в разделе Отличия между использованием соединителя сборки .NET и написанием настраиваемого соединителя.

На рисунке ниже приведена высокоуровневая схема архитектуры служб Microsoft Business Connectivity Services (BCS). На схеме показаны различные соединители, предоставляемые службами Business Connectivity Services, и место, занимаемое в общей архитектуре сборками .NET, веб-службами и настраиваемыми соединителями.

Высокоуровневая архитектура BCS

В данном разделе приведены рекомендации по созданию сборок подключения .NET и веб-служб. После создания веб-службы или сборки подключения .NET для ее подключения и обнаружения с ее помощью внешних типов контента необходимо воспользоваться Microsoft SharePoint Designer 2010.

В приведенной ниже таблице сравниваются возможности обоих подходов.

Таблица 1. Подходы к написанию сборок подключения .NET и веб-служб

Веб-служба

Сборка подключения .NET

Технология реализации

Только веб-службы, совместимые с SOAP 1.1 или SOAP 1.2. Примеры: веб-служба ASP.NET, конечная точка веб-службы WCF

Microsoft .NET Framework 3.5

Размещение

Службы Business Connectivity Services не позволяют размещать веб-службы. Разместить службу должен сам разработчик.

Для сборки подключения .NET размещение необязательно. Сборку подключения .NET можно просто развернуть в хранилище метаданных BDC, все остальное сделают службы Business Connectivity Services.

Поддержка инструментов

Для создания веб-службы можно воспользоваться таким средством разработки как Microsoft Visual Studio. В Visual Studio отсутствуют особые шаблоны проектов или средства создания веб-служб для Business Connectivity Services.

Для создания сборки подключения .NET можно воспользоваться таким средством разработки как Microsoft Visual Studio. В Microsoft Visual Studio 2010 доступен новый шаблон проекта Модель подключения к бизнес-данным с набором визуальных конструкторов и поддержкой возможностей управления кодом, с помощью которого можно легко создавать, отлаживать и развертывать сборки подключения .NET и связанные с ними модели в Business Connectivity Services.

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

Для веб-служб службы Business Connectivity Services поддерживают следующие механизмы проверки подлинности: Passthrough, RevertToSelf, WindowsCredentials, Credentials и DigestCredentials. Дополнительные сведения см. в разделе Доступные режимы проверки подлинности.

В сборке подключения .NET разработчик должен сам реализовать поддержку системы безопасности и проверки подлинности. Если планируется использовать Secure Store, то для программного хранения и получения учетных данных можно воспользоваться объектной моделью Secure Store. Кроме того, для извлечения имени пользователя и пароля также можно воспользоваться фильтром "Имя пользователя/пароль".

Типы

В сборке подключения .NET можно использовать типы .NET, недоступные для веб-служб. Пример: несериализуемые типы.

Рекомендации по проектированию

И в веб-службе, и в сборке подключения .NET в программном коде выполняется подключение к внешней системе, задаются внешние типы контента, необходимые для внешней системы, и реализуется поддержка всех стереотипных операций (экземпляров методов), необходимых для каждого внешнего типа контента.

Поскольку разработчик сам пишет код для веб-службы и сборки подключения .NET, возможности получения данных и их обработки перед возвратом службам Business Connectivity Services и SharePoint, весьма разнообразны. В программном коде можно выполнять различные действия, например статистически обрабатывать данные из нескольких источников, применять преобразования и бизнес-логику и реализовывать собственные схемы безопасности.

ПримечаниеПримечание

Главное при написании веб-служб и сборок подключения .NET — это умение мыслить в терминах внешних типов контента и обеспечение соответствия веб-методов веб-службы и методов сборки подключения .NET стереотипным операциями, поддерживаемым службами BDC. Также важно обеспечить возможность подключения Microsoft SharePoint Designer 2010 к веб-службе и сборке подключения .NET, реализовав таким образом подход "обнаружил и используй", позволяющий создавать внешние типы контента уже после создания и публикации службы.

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

Аналогичным образом, при разработке сборки подключения .NET необходимо убедиться, что каждой стереотипной операции, необходимой для внешнего типа контента, соответствуют методы в коде .NET. Службы Business Connectivity Services вызывают эти методы во время выполнения, когда пользователь выполняет с внешним типом контента какое-либо действие, например считывает или обновляет элемент.

Этапы реализации

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

Сборка подключения .NET

  1. В сборке подключения .NET создайте для каждого внешнего типа контента отдельный класс и определите поля этого класса. Всегда включайте идентификатор внешнего типа контента. Как правило, таким идентификатором является первичный ключ в таблице базы данных. Службы BDC поддерживают составные идентификаторы, включающие до 20 полей.

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

Веб-служба

  1. Разработка веб-службы обычно начинается с определения сложных типов. Определите структуру каждого внешнего типа контента. Опять-таки, всегда следует включать идентификатор внешнего типа контента. Как правило, таким идентификатором является первичный ключ в таблице базы данных. Службы BDC поддерживают составные идентификаторы, включающие до 20 полей.

  2. Определите веб-методы для всех стереотипных операций, которые должны поддерживаться для внешних типов контента. Пример см. в разделе Определение в службе стереотипных операций.

Определение в службе стереотипных операций

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

Требование

Стереотипные операции

Примечания

Чтение внешних элементов

Экземпляры методов SpecificFinder и Finder. Необходимы для всех клиентских функций Business Connectivity Services.

Для оптимизации синхронизации данных на клиентских компьютерах также рекомендуется реализовать методы BulkSpecificFinder, IDEnumerator, BulkIDEnumerator, ChangedIDEnumerator и DeletedIDEnumerator. Это критически важно для автономной работы множества пользователей и автономной работы с большими объемами данных.

Обратная запись внешних элементов

Экземпляры методов Creator, Updater и Deleter, если для внешнего типа контента необходима поддержка операций создания, обновления и удаления.

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

Связанные внешние элементы

AssociationNavigator

Associator

Disassociator

BulkAssociationNavigator, BulkAssocatedIDEnumerator

Методы Associator и Disassociator используются только для связей, не основанных на внешних ключах. Дополнительные сведения см. в описании класса Microsoft.BusinessData.MetadataModel.IAssoication.

Поиск

IDEnumerator и BulkIDEnumerator

AccessChecker

BinarySecurityDescriptorAccessor

Переход в автономный режим на стороне клиента

Методы Finder и SpecificFinder должны возвращать один и тот же набор полей, в противном случае возможно падение производительности. Если методы Finder и SpecificFinder будут возвращать разные наборы полей, пользователи не смогут автономно работать с внешним типом контента в клиентских приложениях Microsoft Office 2010.

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

Данные больших двоичных объектов (BLOB)

StreamAccessor

Рекомендации по написанию сборок подключения .NET и веб-служб

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

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

  • Обрабатывайте значения null. Обычно операция Read сначала обращается к внешней системе, а затем заполняет возвращаемый тип. Убедитесь, что в методе SpecificFinder правильно обрабатываются значения null. Вполне возможно, что некоторые поля во внешней системе (например поля увлечений и адреса) принимают значение null. Крайне важно обеспечить надлежащую обработку ошибок и исключений. Включите в код проверку на значения null и пустые строки и обеспечьте исправление таких значений. Также рассмотрите возможность использования интерпретации NormalizeString для дескрипторов типа.

  • Сопоставляйте имена параметров. Имена параметров должны соответствовать именам, используемым во внешней системе. Если имена параметров в верхнем регистре не идентичны во всех методах, SharePoint Designer 2010 интерпретирует их как разные поля.

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

    Если метод должен возвращать отдельный элемент (например конкретный метод поиска), а необходимый элемент не найден, в коде необходимо выполнить одно из указанных ниже действий.

    1. Возврат значения null. Это самый простой способ, подходящий для большинства ситуаций.

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

    3. Выдача исключения ObjectDeletedException. Это исключение следует использовать только в том случае, если известно, что объект подлежит удалению. Это исключение не рекомендуется использовать в веб-службах.

    4. Не выдавайте других исключений.

    5. Не возвращайте неполные или фиктивные данные.

    Если метод должен возвращать несколько элементов (например метод поиска), а ни одного элемента не найдено, в коде необходимо выполнить одно из указанных ниже действий.

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

    2. Возврат значения null.

    3. Не выдавайте никаких исключений.

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

    1. Выдача исключения.

    2. Не полагайтесь на возвращаемые значения или коды ошибок. Текущая версия служб BDC пока не позволяет интерпретировать эти значения.

Дополнительные сведения см. в разделе Реализация в методах стереотипных операций.

См. также

Задачи

Публикация сборки подключения .NET к хранилищу метаданных BDC

Концепции

Создание сборки подключения .NET

Использование службы Secure Store в сборке подключения .NET

Другие ресурсы

Реализация в методах стереотипных операций