asp.net

【中间件】AutoFac 理解和使用

2025-10-16

一、标准的三层架构模式

Blog.AutoFac.ConsoleApp:控制台应用程序代替界面层(UI),负责处理数据;    

Blog.AutoFac.Service:业务逻辑层(BLL),负责业务逻辑运算;    

Blog.AutoFac.Repository:数据访问层(DAL),负责提供数据。


BlogService 在构造函数初始化 BlogRepository 对象,BlogService 实现依赖于 BlogRepository。BlogRepository 的代码改动也会导致 BlogService 代码改动,这是一种紧密耦合关系。


数据访问层代码:

    /// <summary>

    /// 博客仓储

    /// </summary>

    public class BlogRepository

    {

        public string GetBlogName(long BlogId)

        {

            return "Autofac入门到入坟";

        }

    }


业务层代码:

    public class BlogService

    {

        readonly BlogRepository _blogRepository;

        public BlogService()

        {

            _blogRepository= new BlogRepository();

        }

 

        public string GetBlogName(long BlogId)

        { 

            return _blogRepository.GetBlogName(BlogId);

        }

    }


二、面向接口

面向接口编程是面向对象编程的一部分,通过定义一组接口,仅向上层暴露其接口功能,上层对于下层仅仅是接口依赖,而不依赖具体类。

面向接口好处是降低程序的耦合性,相对于标准的三层架构模式,解除BlogService 对于 BlogRepository 的依赖,易于程序的扩展。

面向接口编程遵循设计模式的开闭原则(对扩展开放,对修改关闭),将具体逻辑与实现分开,有新的改动可以添加新类,减少对于其他模块的影响。


Blog.AutoFac.ConsoleApp:界面层(UI),负责展示数据;    

Blog.AutoFac.Service:业务逻辑层(BLL),负责业务逻辑运算;    

Blog.AutoFac.Repository:数据访问层(DAL),负责提供数据;

Blog.AutoFac.IService:业务逻辑抽象层(InterfaceBLL),业务逻辑运算抽象接口;

Blog.AutoFac.IRepository:数据访问抽象层(InterfaceDAL),