Обзор MSCRM 2011 beta SDK - Часть 1

На днях Microsoft опубликовала документацию для Microsoft Dynamics CRM 2011. Ознакомление с SDK поможет составить целостное представление об архитектуре системы и разобраться в её возможностях. Не буду переписывать содержимое SDK, а расскажу лишь о самых интересных на мой взгляд изменениях.

Итак, содержимое SDK:

  • CHM-файл - непосредственно документация,
  • директория bin с основными типами данных, описаны далее,
  • samplecode - примеры использования на C#,
  • schemas - XSD-схемы конфигурационных файлов,
  • tools - как всегда, утилита регистрации плагинов - pluginregistration и файл сопоставления "сущность - допустимая операция" - 'message-entity support for plug-ins.xlsx'
  • walkthroughs - примеры кастомизации в новом формате solution (!) с проектами для ribbon и workflow.

Сборки из состава Microsoft Dynamics CRM SDK

Перечень сборок из состава SDK:

Assembly Name Description
Microsoft.Crm.Sdk.Proxy.dll Includes the Microsoft.Crm.Sdk.Messages namespace with the messages (request/response types) and enumerations needed for working with organization data.
Microsoft.Xrm.Sdk.dll Includes namespaces containing the core xRM methods and types including a client proxy implementation, authentication methods, the discovery service, query services.
Microsoft.Xrm.Sdk.Workflow.dll Includes the methods and types needed to develop custom workflow activities.
Microsoft.Crm.Tools.EmailProviders.dll Includes methods and types needed for developing a custom e-mail provider component for the Microsoft Dynamics CRME-mail Router.
Microsoft.Xrm.Sdk.Deployment.dll Includes methods and types needed for developing custom deployment code using the deployment Web service.
Microsoft.Crm.Outlook.Sdk.dll Provides programmatic support for basic Outlook actions such as sync, go offline, go online, and Microsoft Dynamics CRM for Outlook state verification.

Архитектура взаимодействия Microsoft Dynamics CRM

Microsoft Dynamics CRM Extensibility Architecture

Тут всё, как в предыдущей версии:

  1. WCF Web Services - Web-сервис реализован через Windows Communication Foundation (WCF),
  2. Processes (formerly Workflows): workflows and dialogs,
  3. Plug-ins,
  4. Client Application Extensions,
  5. Reporting.

О зависимостях прав доступа

Добавлен небольшой раздел с пояснениями зависимостей прав доступа друг от друга.

Действие Необходимые права доступа
To Create a record and be the record owner CREATE
READ
To Share a record SHARE. This right is required by the person doing the share operation.
READ. This right is required by the person doing the share operation and also by the person with whom the record is being shared.
To Assign a record ASSIGN
WRITE
READ
To Append To a record READ
APPENDTO
To Append a record READ
APPEND

Использование Field Security для ограничения доступа к полю в Microsoft Dynamics CRM

Поведение Secured Fields при извлечении данных: если пользователь не имеет доступа на чтение для защищённого поля, будет возвращен null. И нельзя точно определить почему null возвращён - или это поле не содержит значения или же по причине ограничения доступа.

Отсюда вытекает следующее поведение при фильтрации данных: если фильтром задано ограничение на какое-либо поле IsNull, то в результирующий набор попадут как записи, у которых запрошенное поле имеет значение null, так и записи с заполненным полем, но значение которого не может быть отображено пользователю из-за наложения ограничения профилем Field Security. Это также надо иметь в виду при группировках, агрегировании и упорядочиванию по полю с наложенным ограничением, если у пользователя нет прав на чтение, во всех случаях будет использовано значние null. Справедливо вышесказанное и при работе с Filtered Views.

Сценарии программного взаимодействия с Microsoft Dynamics CRM 2011

Microsoft Dynamics CRM 2011 Programmability Scenarios

В Microsoft Dynamics CRM 2011 доступны следующие подходы к разработке:

  • Early-bound – раннее связывание - позволяет использовать строго типизированные методы и свойства. Все определённые в кастомизации поля будут доступны в коде, причём проверка их типов выполняется на этапе компиляции, что позволяет избежать некорректное использование (присвоение значений, написание имён полей).
  • Late-bound – позднее связывание - программная парадигма, позволяющая писать код для сущностей, которые могут быть ещё не определены к моменту начала разработки. Это позволяет писать универсальные компоненты, которые будут работать на любом проекте Microsoft Dynamics CRM. Наглядный пример late-bound программирования - это использование DynamicEntity в CRM 4.0, о судьбе класса DynamicEntity в CRM 2011 будет написано далее.
  • REST – то, о чём так долго говорили большевики, наконец, свершилось - конечная точка формата REST для Ajax- и Silverlight-клиентов представляет альтернативный интерфейс для работы с данными Microsoft Dynamics CRM. Теперь не придётся формировать в клиентском коде обширные SOAP-запросы, достаточно будет обратиться к REST-сервису сформировав определённый URI.
  • WSDL – обратная совместимость и совместимость с другими платформами сохранена с помощью использования стандарта WSDL.

Основные классы CRM 2011

Главный подход к разработке под Microsoft Dynamics CRM 2011 больше не использует WSDL. Вместо этого, задействованы две сборки со всеми необходимыми для разработки типами. Такой сценарий может быть охарактеризован как позднее связывание или слабая типизация: вы используете класс Entity, атрибуты которого хранятся в свойстве типа property bag. Данный стиль программирования подходит для всех типов расширения функциональности Microsoft Dynamics CRM 2011.

Вот как выглядело наследование классов в Microsoft Dynamics CRM 4.0:

Microsoft Dynamics CRM 4.0 Class Structure

В CRM 2011 структура наследования была упрощена:

Microsoft Dynamics CRM 2011 Class Structure

Как видим, класс DynamicEntity был заменён на Entity! Теперь экземпляр сущности может вести себя и как строго-типизированный и как слабо-типизированный объект одновременно. В коде возможно смешение двух подходов:

Account entity = new Account();
entity["name"] = "My Account"; //loosely typed, late binding
Entity.AccountNumber = "1234"; //strongly typed, early binding

Класс Entity предоставляет всем унаследованным от него классам сущностей доступ к атрибутам во время компиляции (ведёт себя как strong type), включая классы для кастомных сущностей и атрибутов. Одновременно с этим допускается использование подхода с поздним связыванием.

В то время как класс DynamicEntity в 4.0 мы могли использовать только с методом Execute web-сервиса CRM, класс Entity допускается использовать и с методами Retrieve или RetrieveMultiple, также как и с методом SaveChanges класса OrganizationServiceContext (о нём будет сказано позже).

Использование IOrganizationService для чтения и записи данных и метаданных

В Microsoft Dynamics CRM 2011 основным сервисом для доступка как к данным, так и метаданным вашей организации является служба IOrganizationService (в CRM 4.0 использовались два раздельных сервиса).

Для использования службы IOrganizationService необходимо в проект Microsoft Visual Studio добавить ссылку на сборку Microsoft.Xrm.Sdk.dll. Для использования сообщений CRM также потребуется добавить и сборку Microsoft.Crm.Sdk.Proxy.dll. Альтернативным способом является добавление ссылки на следующую WCF-службу:

http://<servername>/<organizationname>/XRMServices/2011/Organization.svc

 

На этом, пока, всё. Добавлю, лишь, что в CRM 2011 появится небольшая но долгожданная возможность - включать поддержку заметок (notes) для уже созданных кастомных сущностей. Прям так и написано: "You can update a custom entity, which is not enabled for notes, to have notes by setting the UpdateEntityRequest.HasNotes property to true."

Русский

Метки:

field_vote: 
2.72414
Average: 2.7 (29 votes)

Добавить комментарий