我需要从应用程序的业务层访问几个属性。这些是一些ID和常见设置。它们中的大多数仅在请求 - 响应寿命期间有效 这是一个Web应用程序(具体的ASP.NET Web窗体),设置了依赖注入。
目前,这些属性通过方法参数直接传递给业务层的服务。这有效但但效率不高,因为:
我正在考虑引入一个应用程序上下文接口,在主项目中有一个实现,它将在每个请求中创建。它可以直接注入服务,使它们自动独立地进行参数化(服务不再需要工厂)。
应该如何解决这个问题,还是有其他选择呢? 我不喜欢的一个选择是,它可能会将主要粒子与业务层绑定在一起,这不是The Clean Architecture的完美示例。
答案 0 :(得分:0)
我说你的解决方案是一个非常常见的解决方案 - 注入一个“应用程序”环境'进入你的班级。但我要注意的一件事是确保遵循集成隔离原则(来自SOLID)。不要只是开始让你的所有类都期望一个应用程序上下文实例。相反,设计用于拆分应用程序上下文的接口,并让您的类期望它们作为依赖项。然后,您的应用程序上下文将需要实现所有接口。
这是正确的方法,因为它将您的类与实现分离。实际上你的课程并不关心他们的依赖是来自一个巨大的应用程序环境,他们只关心它实现的具体方法。这将使您的代码更加健壮,因为如果您稍后更改应用程序上下文的实现,您将降低破坏某些内容的风险。
答案 1 :(得分:0)
为什么不使用某些依赖注入容器?您的全局设置和参数可以作为伪单例注册到它,然后您就可以从应用程序内的任何位置整齐地请求它们。