13.08.2016, 20:03 | #1 |
Участник
|
Паралелльная обработка данных в плагине
Добрый день.
Подскажите, каким образом можно создать из Action несколько подключений к CRM 2015? Суть задачи - есть плагин, который обрабатывает большую коллекцию данных. Необходимо распаралелить обработку коллекции, используя Parallel.ForEach. Из консольного приложения все отлично работает, при этом, из файла конфигурации на каждый поток создается отдельное подключение к CRM. В плагине получаю подключение к СРМ из контекста: Код: IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider .GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); Код: IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); Если будет создаваться одно и то же подключение, то как можно создать несколько подключений к CRM из сборки плагина? |
|
13.08.2016, 21:26 | #2 |
Чайный пьяница
|
По поводу того будет ли создаваться новое подключение или там реализован синглтон - без понятия и для того, чтобы найти ответ вам прийдётся рефлектором лезть в сборки CRM и разбираться в них.
Но в целом, я бы рекомендовал (и сам бы так делал) такие операции выносить из контекста CRM по возможности.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
15.08.2016, 15:51 | #3 |
Moderator
|
Я думаю, проще проверить экспериментально. Но я согласен с предыдущим оратором: выполнение такой задачи лучше выносить из плагинов в какие-то сервисы. Работа с данными внутри плагина имеет свою специфику: вызов метода Execute одного инстанса вашего плагина может происходить в параллельных потоках, а класс реализующий IOrganizationService ведет свою родословную совсем от других родителей нежели OrganizationServiceContext. Скорее всего, многопоточные вызовы сделать не выйдет.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
Теги |
crm parallel foreach |
|
|