Submitted by Vladislav Osmanov on 05.11.2010 18:51
Пока пропущу один небольшой раздел из серии обзоров SDK и расскажу про REST.
Взаимодействие с Microsoft Dynamics CRM 4.0 на клиентской стороне сводилось к вызову XML Web-сервиса путём формирования в клиентском скрипте SOAP-запроса. Плюсом данной технологии является интероперабельность - возможность использования сервиса независимо от технологий и языков программирования. И это был единственный способ взаимодействия с системой на стороне клиента. Минусов куда как больше:
сложная структура запроса - формирование объёмного XML-запроса занятие кропотливое,
трудности парсинга (разбора) ответа, т.к. необходимы знания объектной модели документа (DOM), регулярных выражений и XQuery/XPath для извлечения требуемых данных,
нетривиальная обработка ошибок.
Для решения возникающих трудностей с вызовом XML Web-сервиса CRM различными командами были предложены обёртки, призванные облегчить эту задачу:
В Microsoft Dynamics CRM 2011 данные теперь доступны через конечную точку REST. REST (Representational State Transfer) - архитектурный подход, который подразумевает использование ресурсов через обращение по уникальному URI-пути. А это значит, что теперь достаточно обратиться GET-, POST-, MERGE-, DELETE- или PUT-запросом на определённый URI, чтобы извлечь данные из CRM, обновить, удалить или сохранить запись. [node:read-more:link]
Submitted by Vladislav Osmanov on 05.11.2010 17:53
Продолжаю обзор SDK поставки Microsoft Dynamics CRM 2011 beta.
Объект Xrm.Page.context предоставляет доступ к текущему контексту страницы. С помощью него можно получить информацию об организации и текущем пользователе. Xrm.Page.context предоставляет доступ к следующим функциям:
getAuthenticationHeader - возвращает закодированное значение SOAP-заголовка необходимого для вызова Web-сервиса (формата CRM 4.0) из скрипта;
getOrgLcid - возвращает LCID - идентификатор культуры (локаль) текущей организации;
getOrgUniqueName - возвращает уникальное имя текущей организации;
Но что делать, если вы хотите использовать эти чрезвычайно полезные функции в клиентском коде своих приложений а не с форм CRM? Для этого достаточно подключить скрипт с функцией GetGlobalContext как описано ниже: [node:read-more:link]
Submitted by Vladislav Osmanov on 27.10.2010 19:27
Опять про SecLib::CrmCheckPrivilege. В некоторых случаях CRM всё-таки сообщает о проблемах с правами у пользователя. И был известный способ определения недостающих привилегий - простым запросом:
SELECT Name FROM Privilege WHERE PrivilegeId = 'ea8e9601-500e-4bd7-be73-022f3269e5b6'
Для тех кто не имеет доступ к Microsoft SQL Server Management Studio Mitch Milam написал небольшую утилиту - Find Privilege.
Submitted by Vladislav Osmanov on 06.10.2010 19:21
Столкнулся на днях с интересной проблемой: несмотря на то, что в конфиге приложения выставлены необходимые настройки, запрос WhoAmIRequest всегда возвращал данные системного пользователя CRM - SYSTEM.
При помощи этой уязвимости злоумышленник может запрашивать и загружать с сервера файлы входящие в приложение ASP.NET такие как web.config (который часто содержит секретные данные), а также расшифровать данные посланные клиенту в зашифрованном состоянии (такие как данные ViewState на странице).
Данная уязвимость затрагивает и Microsoft Dynamics CRM, особенно IFD-проекты (Internet Facing Deployment). [node:read-more:link]
Кстати, пока остаётся неясным процесс обновления серверной части компонентов Microsoft Dynamics CRM, т.к. в статье идёт речь только об обновлении клиентских компонентов (клиент для Outlook). [node:read-more:link]
Submitted by Vladislav Osmanov on 27.09.2010 20:06
На днях 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.
Submitted by Vladislav Osmanov on 24.09.2010 17:10
Думал уже не столкнусь с таким, ан нет. Понадобилось развернуть приложение (ASP.NET с отображением отчётов SQL Server Reporting Services 2008) на новом сервере, и опять получил "Unable to load client print control" при печати отчёта.
А всё дело в том, что в ранних версиях клиентского ActiveX-компонента для печати отчёта (RSClientPrint из состава SSRS) была обнаружена уязвимость. Для принудительного отключения таких компонентов Microsoft периодически выпускает обновления безопасности, включающие в себя так называемые kill bits - идентификаторы (CLSID) COM/ActiveX-компонентов, запуск которых запрещён в Windows. [node:read-more:link]
Submitted by Vladislav Osmanov on 20.09.2010 21:07
Если вы внедряете Microsoft Dynamics CRM, то с уверенностью могу сказать, что уже сталкивались с керберос дабл хоп, ну, или обязательно с этим столкнётесь.
Что же это такое? Вкратце, это НЕвозможность транслировать от сервера к серверу ваши имперсонированные учётные данные (полученные от клиентской станции). В контексте CRM это часто встречается при обращении вашего ASP.NET приложения (которое хостится на application-сервере CRM) к SQL-серверу или серверу отчётов. [node:read-more:link]
Последние комментарии