2010-09-15 14 views

risposta

4

NServiceBus supporta flussi di lavoro attraverso "saghe", http://nservicebus.com/Sagas.aspx

La differenza chiave è che Sagas è più facile da test di unità e che non dovete preoccuparvi di coerenza in quanto l'uso di fondo del NSB delle code e DTC si assicura i passaggi non riusciti vengono ritentati automaticamente.

Udi ha un podcast discutere tutto questo:

http://www.udidahan.com/2007/10/23/podcast-durable-services-with-wcf-wf-and-nservicebus/

In breve: se si utilizza NSB non ci sarebbe alcun bisogno IMO per MS WF.

+0

Questo non è corretto. I flussi di lavoro sono molto più che saghe. Anche lo stesso Udi sta dicendo che: http://www.udidahan.com/2007/12/17/no-more-workflow-for-nservicebus-please-welcome-the-saga. Inoltre, dove sono tutte le implementazioni di pattern comuni? http://www.workflowpatterns.com/patterns/resource/ – Den

10

vorrei dare i miei 2 centesimi:

sto lavorando in nuovo progetto con un dominio abbastanza complesso, dove alcuni flussi di lavoro di dominio potrebbero evolversi e cambiare in alcuni scenari differenti. Stiamo analizzando le possibili soluzioni per orchestrare i diversi application server (servizi WCF). La prima soluzione architettonica che abbiamo analizzato utilizzava un pattern di Service Bus + PubSubs (nservicebus, rhino ESB, masstransit, Shuttle ESB ...). L'altra soluzione che abbiamo analizzato era WF 4.0. Siamo vicini a prendere la decisione e ormai WF 4.0 è il Figlio perché:

  • I flussi di lavoro sono modellati usando workflow diagrams
  • Workflow diagram designer can be embedded in un'applicazione personalizzata, che può essere utilizzato per evolvere i flussi di lavoro durante la produzione dal momento che sono definito in XAML.
  • PubSubs modello con saghe, in qualche modo sarebbe diluire come il flusso di lavoro è modellato e in alcuni scenari complessi che sarebbe stato difficile avere una visione chiara di come funziona il flusso di lavoro
  • WF 4.0 servizi di flusso di lavoro è on top of WCF, in modo da poter avere Invia/Ricevi attività che parlano agli endpoint WCF. Pertanto, abbiamo tutta la potenza e la flessibilità di WCF: sicurezza, comunicazioni affidabili, MSMQ, WS * standard, ...
  • servizi WF 4.0 possono essere ospitati su Appfabric: scalabilità, manutenibilità, il monitoraggio e la risoluzione dei problemi semplice

C'è una truffa che stiamo analizzando che è il fatto che WF 4.0 non supporta le macchine a stati (come nella versione 3.5). Anche se MSFT explains how to implement state machines utilizzando le nuove attività Fowchart forniti con 4.0

Spero che questo aiuti,

Juanjo

+0

[WF4 State Machine] (http://blogs.msdn.com/b/endpoint/archive/2011/04/20/wf4-state-machine-user -experience.aspx) è ora disponibile. – TrueWill

8

Non sono d'accordo con @Andreas Öhlund. È come dire "Ho C# e .NET Framework, quindi perché devo acquistare un sistema ERP?" @ juanjo.arana's risposta è molto più equilibrata.

NServiceBus documentation for Sagas è una pagina (5 schermate sul mio monitor). Il libro Pro WF è di 850 pagine. (L'ho letto, non è filler.) Il libro Professional K2 blackpearl (che parla di un sistema completo BPM) è di 870 pagine (il conteggio di Amazon è disattivato).

Anche WF 4 (escluso SharePoint) non è un sistema BPM completo. Manca un modello di sicurezza a livello di attività, il blocco ("Bob ha rivendicato questo ordine di lavoro, ma non l'ha ancora completato"), il controllo delle versioni e il reporting avanzato. Puoi costruire tutte queste cose, ma non sono nella "scatola".

Guarda la sezione Timeouts della pagina di Sagas di NServiceBus. Confrontalo con il metodo visivo di fare un expiration in WF 4. Immagina di tenerne traccia in un flusso di lavoro complesso, in cui sono necessari timeout (escalation) ogni volta che un manager vuole essere avvisato che un dipendente impiega troppo tempo in un sistema di elaborazione dei documenti.

Sono d'accordo sul fatto che i flussi di lavoro sono talvolta eccessivi e che possono essere difficili da testare. (Esistono ways to unit test WF 4.) Ma non vorrei creare un flusso di lavoro in stile BPM reale con NServiceBus.

Problemi correlati