Edition 0 Updated to asp. Net core 0



Yüklə 11,82 Mb.
Pdf görüntüsü
səhifə206/288
tarix12.07.2023
ölçüsü11,82 Mb.
#136458
1   ...   202   203   204   205   206   207   208   209   ...   288
NET-Microservices-Architecture-for-Containerized-NET-Applications

null
) ? 
false

true

if
(!buyerOriginallyExisted) 

buyer = 
new
Buyer
(userGuid); 

buyer.
VerifyOrAddPaymentMethod
(cardTypeId, 
$
"Payment Method on {DateTime.UtcNow}"

orderStartedEvent.
CardNumber

orderStartedEvent.
CardSecurityNumber

orderStartedEvent.
CardHolderName

orderStartedEvent.
CardExpiration

orderStartedEvent.
Order
.
Id
); 
var
buyerUpdated = buyerOriginallyExisted ? _buyerRepository.
Update
(buyer) 

_buyerRepository.
Add
(buyer); 
await _buyerRepository.
UnitOfWork
.
SaveEntitiesAsync
(); 
// Logging code using buyerUpdated info, etc.


The previous domain event handler code is considered application layer code because it uses 
infrastructure repositories, as explained in the next section on the infrastructure-persistence layer. 
Event handlers could also use other infrastructure components. 
Domain events can generate integration events to be published outside of the 
microservice boundaries 
Finally, it’s important to mention that you might sometimes want to propagate events across
multiple 
microservices. That propagation is an integration event, and it could be published through an event 
bus from any specific domain event handler. 
Conclusions on domain events 
As stated, use domain events to explicitly implement side effects of changes within your domain. To 
use DDD terminology, use domain events to explicitly implement side effects across one or multiple 
aggregates. Additionally, and for better scalability and less impact on database locks, use eventual 
consistency between aggregates within the same domain. 


239 
CHAPTER 6 | Tackle Business Complexity in a Microservice with DDD and CQRS Patterns 
The reference app uses 
MediatR
 to propagate domain events synchronously across aggregates, within 
a single transaction. However, you could also use some AMQP implementation like 
RabbitMQ
 or 
Azure Service Bus
 to propagate domain events asynchronously, using eventual consistency but, as 
mentioned above, you have to consider the need for compensatory actions in case of failures. 

Yüklə 11,82 Mb.

Dostları ilə paylaş:
1   ...   202   203   204   205   206   207   208   209   ...   288




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin