У меня есть 2 API микро-сервисов, которые называются User
и Order
. Поскольку это микросервисы, они оба имеют отдельные DbContext и разные несвязанные сущности. Одним из требований, которые я получил, является список Orders
с именем User
, который его заказал.
упрощенные сущности похожи на это:
public class User
{
public Guid UserId {get;set;}
public string Name {get;set;}
//Notice no ORM relations added for Order
}
public class Order
{
public Guid OrderId {get;set;}
public Guid UserId {get;set}
//Notice no ORM relations user added. ONLY UserId is returned since this is a microservice and another domain
}
Прямо сейчас я могу думать только об одном эффективном подходе, но у него все еще есть недостатки
Получать заказы и отправлять ВСЕ пользовательские идентификаторы на микросервис Пользователя следующим способом:
public ICollection<Tuple<Guid,string> GetUserNames(ICollection<Guid> userIds)
{
//go to the database with ORM and get userId and username as a list
}
При моем подходе это не кажется практичным, поскольку когда-нибудь позже требования могут измениться, а также может потребоваться пол пользователя или любая другая информация. Затем мне пришлось бы написать много методов для этих конкретных требований или каждый раз менять свой код.
Кроме того, извлечение ALL информации user
каждый раз также нецелесообразно, так как потребляет много сетевого трафика.
Существует ли такая лучшая практика для обработки общих сущностей лучше, чем я имею в виду? Или вы думаете, что этот подход все еще достаточно хорош?
Спасибо.