Domanda

Sto usando MSMQ come un modo per fornire SOA asincrona. Si prega di fare riferimento al codice seguente poiché è abbastanza difficile da spiegare. Sto cercando di capire il modo migliore per farlo.

//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 */ }
}

Man mano che il codice diventa più complesso, sarà davvero difficile da gestire. Tutti i suggerimenti sono benvenuti!

È stato utile?

Soluzione

Cerca nell'uso dei delegati. Ti permetteranno di passare l'effettiva chiamata del metodo in MSMQ in modo da poter quindi lanciare il delegato / azione quando lo recuperi dalla coda.

Altri suggerimenti

Usa WCF. Microsoft lo ha concluso in modo che il servizio (nel senso di SOA) si presenti come una chiamata di metodo, il trasporto è MSMQ.

Il contratto è necessariamente a senso unico e il fatto che il trasporto sia MSMQ è totalmente secondario al servizio e al suo cliente (tranne nella misura in cui questa scelta impone un contratto a senso unico).


In un'altra nota, mi sento costretto a commentare: finché non puoi esprimere in modo chiaro e conciso l'intento e la strategia di attuazione, non hai un'idea chiara e completa di ciò che stai creando e le tue possibilità di successo sono al massimo scarse. .

Lo sviluppo del software inizia prendendo le vaghe deviazioni del personale di gestione e delle vendite e applicando il buonsenso per loro conto, con cicli di feedback, fino a quando una parte perde interesse, il budget si esaurisce o produci ciò che gli sponsor del progetto considerano un rendering chiaro e conciso di ciò che immaginano di aver detto durante quel primo agitato braccio agitato.

Se non puoi spiegare cosa stai facendo, allora non sai cosa stai facendo. È ora di fermarsi e pensare fino a quando non lo fai.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top