- JavaScript 声明全局变量和局部变量
- 如何判断一个网站的权重值
- 版本详解:canary、dev、stable、beta
- 局域网的打印机每次都要打印一张测试页才能用怎么解决
- Element-UI自定义拖拽列表的制作方法
- Element Plus 的 el-col 的xs、sm、md、lg、xl的使用
- Navicat建数据库时字符集与排序规则说明
- 浅谈图片ALT文字与SEO的关系与应用
- 简单的精华代码集
- utf-8、utf8mb4和utf8mb3有什么区别
邮箱:
手机:15383239821
【中间件】AutoFac 理解和使用
一、标准的三层架构模式
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),
- 上一篇:Autofac是什么?
- 下一篇:string.format()用法
-
2024-07-16SKU 和 SPU 有什么区别?
-
2025-11-08HTML5中的lang属性
-
2013-11-15|DataDirectory|解决webconfig数据库连接的相对路径问题
-
2023-08-26thinkphp常用语法
-
2011-02-19C#中split的方法和用法
-
2014-03-23建立CRM数据库的几个原则
