三层架构是一种常见的软件设计模式,将应用程序分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL),实现职责分离、代码复用和易于维护。

三层架构的核心组成

表示层(Presentation Layer)

负责用户交互和界面展示,通常由WinForm、WPF、ASP.NET MVC或Web API实现。

  • 调用业务逻辑层完成功能,不直接操作数据。
  • 示例代码(ASP.NET MVC控制器):
public class ProductController : Controller  
{  
    private readonly ProductBLL _productBLL;  
    public ProductController()  
    {  
        _productBLL = new ProductBLL();  
    }  
    public ActionResult Index()  
    {  
        var products = _productBLL.GetAllProducts();  
        return View(products);  
    }  
}  
 
业务逻辑层(Business Logic Layer, BLL)

处理业务规则和流程,协调表示层与数据访问层的交互。

通过合理应用三层架构,能显著提升C#应用程序的结构清晰度和可扩展性。

  • 包含核心逻辑,如验证、计算、事务管理等。
    public class ProductBLL  
    {  
        private readonly ProductDAL _productDAL;  
        public ProductBLL()  
        {  
            _productDAL = new ProductDAL();  
        }  
        public List<Product> GetAllProducts()  
        {  
            return _productDAL.GetProducts();  
        }  
        public void AddProduct(Product product)  
        {  
            if (product.Price > 0)  
                _productDAL.InsertProduct(product);  
        }  
    }  
     
    
    数据访问层(Data Access Layer, DAL)

    负责与数据库交互,执行CRUD操作。

  • 使用ADO.NET、Entity Framework或Dapper等工具。
    public class ProductDAL  
    {  
        private readonly string _connectionString;  
        public ProductDAL()  
        {  
            _connectionString = ConfigurationManager.ConnectionStrings["DB"].ToString();  
        }  
        public List<Product> GetProducts()  
        {  
            using (var connection = new SqlConnection(_connectionString))  
            {  
                return connection.Query<Product>("SELECT * FROM Products").ToList();  
            }  
        }  
        public void InsertProduct(Product product)  
        {  
            using (var connection = new SqlConnection(_connectionString))  
            {  
                connection.Execute("INSERT INTO Products (Name, Price) VALUES (@Name, @Price)", product);  
            }  
        }  
    }  
     
    

    三层架构的优势

  • 解耦:各层职责明确,修改一层不影响其他层。
  • 可维护性:逻辑分离,便于团队协作和代码维护。
  • 可测试性:每层可独立测试(如Mock数据测试BLL)。
  • 注意事项

  • 避免在表示层直接调用DAL,破坏分层原则。
  • 业务逻辑层不应包含数据访问代码(如SQL语句)。
  • 对于复杂项目,可引入四层架构(如服务层)或领域驱动设计(DDD)。

更多推荐