вопрос, связанный с MSMQ "как действовать сообщение" - PullRequest
1 голос
/ 11 марта 2009

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

//another method reads off MSMQ and passes the Message into this method
public void ReadMSMQAndAction(Message m)
{
  var e = m.Entity;

  /* this is really bad, but i some how still need some 
   * kind of traffic cop to direct action */
  switch typeof(m.Entity)
    case Order.GetType()
      switch e.Action
        case "SAVE"
          //todo OrderRepo Save
}

//Message gets searlized and put into MSMQ
public class Message<T>
{
  public T Entity { get;set; }

  /* should this be string?
   * or some kind of rule i.e. "ClassName:MethodName" etc? */
  public string Action { get;set; } 
}

public class OrderRepo
{
  public void Save(Order o) { /* todo */ }
  public void Delete(Order o) { /* todo */ }
  public void Update(Order o) { /* todo */ }
}

Поскольку код становится более сложным, им будет очень сложно управлять. Любые предложения приветствуются!

Ответы [ 2 ]

1 голос
/ 11 марта 2009

Изучите использование делегатов. Они позволят вам передать фактический вызов метода в MSMQ, чтобы вы могли затем запустить делегат / действие при получении его из очереди.

0 голосов
/ 11 марта 2009

Используйте WCF. Microsoft завершила его так, что сервис (в смысле SOA) представлен как вызов метода, а транспорт - MSMQ.

Контракт обязательно является односторонним, и тот факт, что транспорт является MSMQ, является абсолютно случайным для службы и ее клиента (за исключением случаев, когда этот выбор вызывает односторонний контракт).


С другой стороны, я вынужден комментировать: пока вы не сможете четко и кратко выразить намерение и стратегию реализации, у вас нет четкого и полного представления о том, что вы создаете, и ваши шансы на успех в лучшем случае невелики .

Разработка программного обеспечения начинается с расплывчатых ошибок руководства и менеджеров по продажам и применения здравого смысла от их имени, с циклами обратной связи, пока одна из сторон не потеряет интерес, не закончится бюджет или вы не создадите то, что спонсоры проекта считают четкое и краткое изложение того, что, по их мнению, они сказали во время того первого взволнованного взмаха руки.

Если вы не можете объяснить, что вы делаете, вы не знаете , что вы делаете. Время остановиться и подумать, пока вы не сделаете.

...