我有项目:
在ui项目中,会话中有一个购物车:
public class Cart
{
public List<CartItem> CartItems { get; set; } = new List<CartItem>();
}
public class CartItem
{
public Guid ItemId { get; set; }
public int Quantity { get; set; }
public decimal Price { get; set; }
}
在域项目中,我引发了事件 ProductPriceHasChangedEvent 。在应用程序项目中,我具有事件处理程序: ProductPriceHasChangedEventHandler -如何在用户会话中刷新购物车中的产品价格?项目应用程序没有对项目ui的引用,也没有对httpcontext和session的引用。
答案 0 :(得分:1)
您的UI(具有有效打开会话的用户购物车)必须在您的应用程序中查询购物车商品的最新价格。
我认为最好的方法是定期重新加载购物车,执行初始加载所做的所有逻辑。然后,您会刷新购物车中的所有信息,不仅是价格,即描述,商品可用性(如果需要)等。
假设我们正在谈论单页JS应用+ Web API:
使您的购物车的JavaScript可以查询API,以便每隔一小时(取决于您的时间)重新加载购物车:
GET /api/users/<userid>/cart
然后从传入的数据刷新UI。这样一来,您可以随时了解最新价格。
答案 1 :(得分:1)
您的问题已超出DDD的权限。 DDD不会直接处理UI与域之间的通信,也不会基于该域提出建议。实际上,DDD在与UI无关的方面非常清楚。不过,要解决您的问题,请执行以下操作:更新UI的主要方法有两种: