MVC DAL&BLL概念

hig*_*ers 8 .net c# vb.net

我习惯经典Asp,我从未使用过DAL/BLL概念,现在我正在学习MVC并试图远离BAD习惯(例如在ASP页面本身中编写SQL查询).我读到了关于数据访问层和业务逻辑层......它们有意义,但我想弄清楚如何将它们放入我当前的应用程序中.

它是一个购物车应用程序.

目前我没有使用EF或SQL实体,简单的旧ADO.NET,我的函数返回DataTable.

让我给你举个例子.

1 - I need to Return Products From SQL Table 
2 - My Products Model Class will hold the SQL Table output 
3 - and then I will show the output to View
Run Code Online (Sandbox Code Playgroud)

查询涉及到产品

Select *  From Products Where title = 'Bluh'
Run Code Online (Sandbox Code Playgroud)

ProductsModelView.vb

Class ProductsModelView

 Public title as string
 Public sku as string
 ....etc
End Class
Run Code Online (Sandbox Code Playgroud)

现在我的视图将只是渲染结果(列表(ProductsModelView))

现在我的问题是......我应该如何将上述步骤构建到DAL和BAL图层中.

Ken*_*eth 19

一个基本的开始方式是创建3个项目:

  • DAL项目
  • 一个BLL项目
  • 一个UI项目(你的MVC应用程序)

在DAL项目中,您应该创建一个repository类.这个类的作用是对数据库执行查询并将DataTable转换为模型.

你的BLL项目应该有一个service类.此类具有对DAL的引用,并调用该方法以获取所需的对象列表(DAL处理DB代码).在本课程中,您可以应用逻辑.注意:目前您的应用中似乎没有任何真实的逻辑.没关系,您的服务可以立即从DAL返回列表.它将为您提供一个可以在以后安全地添加逻辑的位置,而不会影响数据访问代码.

在UI中,控制器将调用服务并将结果传递给视图,然后视图负责呈现结果.

这是一个基本的起点.你可以更进一步,并完全松散耦合.目前,你仍然有来自UI => BLL => DAL的硬依赖.

我最近写了一篇关于如何确保不创建硬依赖关系的文章:http: //www.kenneth-truyers.net/2013/05/12/the-n-layer-myth-and-basic-dependency -注射/

  • 这取决于你正在构建的应用程序.根据我的经验,一旦你有一个中等复杂的应用程序,BLL层是有价值的.如果应用程序那么小,即使BLL有一点开销,也不会让人望而却步(因为它很小). (2认同)
  • 即使你没有做任何复杂的事情,BLL层也很有价值,因为它提供了一个Seam.当/如果你最终需要做更多的逻辑,你不必重构整个应用程序来进行更改.更不用说测试等等.根据您构建DAL的方式,将其分解为单元/集成测试可能并不容易. (2认同)