Separazione della responsabilità delle query dei comandi (CQRS) separa la lettura e la scrittura in due diversi modelli.
Un'architettura "convenzionale" ha il seguente aspetto:
Un'architetturaCQRSsipresentacosì:
SinoticomeildiagrammaCQRShadueendpointcheservonol'interfacciautente,nonsolouno?
IlmodelloMediatoredefinisceunoggettocheincapsulailmodoincuiuninsiemedioggettiinteragisce.Ilmediatorepromuovel'accoppiamentoliberoimpedendoesplicitamenteaglioggettidiriferirsil'unl'altroeconsentedivariarelalorointerazioneinmodoindipendente.
Ilschemadelmediatoregarantiscecheicomponentinonsichiaminoavicendainmodoesplicito,mainvecelofannoattraversolechiamateaunmediatore.Nell'esempioseguente,MediatorregistratuttiicomponentiequindichiamailorometodiSetState
.
publicinterfaceIComponent{voidSetState(objectstate);}publicclassComponent1:IComponent{publicvoidSetState(objectstate){thrownewNotImplementedException();}}publicclassComponent2:IComponent{publicvoidSetState(objectstate){thrownewNotImplementedException();}}//MediatesthecommontaskspublicclassMediator{publicIComponentComponent1{get;set;}publicIComponentComponent2{get;set;}publicvoidChangeState(objectstate){this.Component1.SetState(state);this.Component2.SetState(state);}}
Imediatorisiprestanospontaneamentealmodellodiosservatoreealmodellodiaggregatoredieventi,poichéglieventisonounmodonaturaleperregistrarecomponenticonunmediatore:
SinotiquantoquestodiagrammasimiledelmodellodiosservatoresiasimilealdiagrammadelmodellodiMediatoresopra?
ChecosahaachefareilmodellodimediatoreconCQRS?
Nonmolto,davvero.
Bene,oltrealfattochepuoiusareunmediatoreconCQRSeunpatterndiosservatoreconilmediatoreeprobabilmenteunamezzadozzinadialtrimodellidisoftwareutiliconentrambi.
Ulterioriletture
Segregazione della responsabilità delle query dei comandi di Martin Fowler
< a href="https://msdn.microsoft.com/en-us/library/dn568103.aspx"> Esempio CQRS in C # in MSDN
Comando di segregazione delle responsabilità delle query su Wikipedia
Modello di osservatore su Sourcemaking.com
Aggregatore di eventi (Fowler)