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

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

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

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


person Scott Ivey    schedule 13.03.2009    source источник


Ответы (3)


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

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

  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 для использования.

person Ian Robinson    schedule 14.03.2009
comment
я получаю нулевое значение в ModuleCommunication. В чем будет проблема? - person ranjenanil; 12.06.2012

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

person bdukes    schedule 13.03.2009
comment
Используете ли вы другой способ связи между модулями, или вам просто никогда не нужно? Должен ли я смотреть на что-то еще, может быть, лучший способ сделать это? - person Scott Ivey; 13.03.2009
comment
Да, я никогда не использовал его. Я полагаю, мы просто пытаемся иметь автономные модули. Любая связь между модулями, вероятно, будет осуществляться через строку запроса. - person bdukes; 13.03.2009

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

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

person Marcos Buarque    schedule 14.03.2009