我已经以DDD方式布置了我的东西。有存储我的对象的存储库,提供外部功能的服务等。
但是,尚不清楚在控制器之间共享这些内容的最佳方法是什么?在C#中,我将有一个依赖项注入框架和一个服务器实例。 Python是鸭子类型的,似乎不需要很多DI。但是,仍然存在如何获取共享对象的问题,该问题将在请求之间持续存在。
到目前为止,我一直将它们挂在我的应用程序对象之外,但是似乎应该有一种更优雅,更标准的方法。
我专门问有关共享对象的信息,这些对象可以为应用添加行为,并且可以在应用中的不同位置调用,而不是关于在之间共享或更改数据的请求。
答案 0 :(得分:3)
常见的方法似乎是
例如定义repositories.py
customer_repository = CustomerRepository(options)
...
和service.py
from repositories import customer_repository
customer_repository.find(id==5)
通常为imports are cached,因此所有模块都应导入对象的相同实例。无论如何,由于您正在执行DDD,所以这些对象无论如何都应该是无状态的。
永远不要对将更改为global data is not thread safe in web applications的共享 数据执行此操作。如果要在请求之间共享数据,请使用数据库或其他外部数据存储。