DDD: Confusion about repository/domain boundaries

扶醉桌前 提交于 2019-12-24 17:20:08

问题


My domain consists of Products, Departments, Classes, Manufacturers, DailySales, HourlySales.

I have a ProductRepository which facilitates storing/retrieving products from storage.

I have a DepartmentAndClass repository which facilitates storing/retrieving of departments and classes, as well as adding and removing products from those departments and classes.

I also have a DailySales repository which I use to retrieve statistics about daily sales from multiple groupings. ie..

DailySales.GetSalesByDepartment(dateTime)
DailySales.GetSalesByClass(dateTime)
DailySales.GetSalesByHour(dateTime)

Is it correct to have these sales tracking methods in their own repository like this? Am I on the right track?


回答1:


Since domains are so dependent on context some answers are harder than others. I would, however, place statistics on the Query side of things. You probably do not want to be calculating those stats on the fly as you will be placing some heavy processing on your database. Typically the stats should be denormalized for quick access where only filtering is required.

You may want to take a look at CQRS if you haven't done so.




回答2:


Although most queries return an object or a collection of objects, it also fits within the concept to return some types of summary calculations, such as an object count, or a sum of a numerical attribute that was intended by the model to be tallied.

    Eric Evans - Domain-Driven Design

This might be considered a read model. Are these daily sales objects being used in any domain model behaviour? Does any business logic depend on them? If not, it might be a good idea to separate this out into a distinct read model - at which point you're taking your first steps into CQRS.



来源:https://stackoverflow.com/questions/17138764/ddd-confusion-about-repository-domain-boundaries

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!