DotNetNuke межмодульная связь

Я изучаю межмодульное взаимодействие с DotNetNuke 4.8.4 - и мне интересно, есть ли у кого-нибудь хорошие примеры для этого.

Я понимаю, что вы реализуете IModuleCommunicator для отправителя и IModuleListener для получателя, но не видите способа связать их вместе, кроме как просто переместить их на одну страницу.

ВСЕ ли слушатели на данной странице слушают ВСЕХ отправителей на данной странице? Если да, то как лучше отфильтровать шум?

3 ответа

Решение

Вчера вечером я читал об IMC в книге по программированию модулей DotNetNuke от Mitchel Sellers.

Вот некоторые из основных блюд:

  1. Работает только между модулями на одной странице.
  2. Соображения AJAX - вероятно, не будут работать с частичной обратной передачей
  3. Возникающие события отправляются любому модулю, который реализует IModuleListner, поэтому вы должны быть уверены, что вы потребляете правильную вещь.

Вот пример отправки информации:

if (ModuleCommunication != null)
{
 var args = new ModuleCommunicationEventArgs();
 args.Sender = "Something";
 args.Target = "Something Else";
 args.Text = "Something";
 args.Type = "Something";
 args.Value = new Object();
 ModuleCommunication(this, args);
}

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

Я использую Open Web Studio. Это интересный инструмент, хотя ему не хватает надежной документации. Это позволяет мне связывать два модуля DotNetNuke на одной странице и автоматически перезагружать информацию о втором, основываясь на том, что что-то щелкнуло на первом. Я не знаю, если это то, что вы ищете. Если это так, я могу дать вам еще несколько советов и несколько ссылок на учебные пособия о том, как заставить эту вещь работать.

OWS бесплатен (с платной поддержкой), но, как я уже сказал, ему не хватает глубокой документации, хотя вы можете пройти мимо с некоторым терпением и суетой.

Я не использовал IMC лично, но, насколько я понимаю, все слушатели слушают всех отправителей. ModuleCommunicationEventArgs, который отправляется слушателю, включает свойство Target, которое, я думаю, должно быть первым, что вы должны проверить, т.е. проверить, является ли это сообщение для вас.

Другие вопросы по тегам