Asp.net mvc 3 这些服务应该注入基类吗?(相对于静态类)

Asp.net mvc 3 这些服务应该注入基类吗?(相对于静态类),asp.net-mvc-3,inversion-of-control,Asp.net Mvc 3,Inversion Of Control,我在想。。如果我有像ILoggingService、IMailerService、ICacheService这样的服务。这些都是基础设施的一部分。但是,您是将它们作为静态类还是将它们注入基类中,以便所有派生类都可以作为单例访问它们?如何处理它们?依赖项通常表示基础结构组件。不仅电子邮件,而且任何类型的数据访问都可以被视为基础设施的一部分。这样的服务最好作为“适当的”依赖项保存,因为它们实现了应用程序的行为。可以说,它们满足了应用程序的功能需求 无论是发送电子邮件还是保存在数据库中的记录,在功能上

我在想。。如果我有像ILoggingService、IMailerService、ICacheService这样的服务。这些都是基础设施的一部分。但是,您是将它们作为静态类还是将它们注入基类中,以便所有派生类都可以作为单例访问它们?如何处理它们?

依赖项通常表示基础结构组件。不仅电子邮件,而且任何类型的数据访问都可以被视为基础设施的一部分。这样的服务最好作为“适当的”依赖项保存,因为它们实现了应用程序的行为。可以说,它们满足了应用程序的功能需求

无论是发送电子邮件还是保存在数据库中的记录,在功能上都存在差异

但是,缓存之类的东西表示非功能性需求。应用程序在没有它的情况下工作,尽管速度会慢一些。日志记录有时属于这一类,而有时则是一种功能需求


许多基础架构组件(如日志记录、审核、缓存、授权、计量等)都是横切关注点,因此通常更好地处理为。

您很好地描述了不同类型的依赖关系,但您在哪里回答
,您是将它们作为静态类还是将它们注入基类,以便所有派生类都可以作为单例访问它们?您如何处理它们
?以上都没有。我会像链接中解释的那样将它们实现为Decorators。@MarkSeemann但什么是“Decorators”?我读了你的博客,仍然不明白什么是“装饰者”。你有什么具体的例子吗?是的,装饰师最适合交叉关注点。业务逻辑仍然可以“正常”注入到消费者中。这听起来像是在特定DI容器的上下文中思考。。。所以不喜欢长时间的评论讨论,所以你应该问一个新问题,说明你需要帮助的具体容器。