0

我正在创建一个简单的应用程序,其中用户注册他/她的姓名,注册后他/她重定向到登录页面,登录后他/她重定向到主页。正如我所说的一个简单的应用程序.. 但我担心的是我想在 MVC3 中实现它但是使用 3 层架构。为此我创建了一个 MVC3 项目,将其命名为 Presentation 并在解决方案下创建了一个新项目并将其命名为 DAL并移动了 DAL 中的模型文件夹,我在其中创建了所有属性和 DbContext 以及控制器和演示文稿中的视图。所以有人能告诉我在 BLL 文件夹中保留什么吗?请给我建议!!!

4

2 回答 2

0

您可能会放置控制器使用的任何 Helper 方法、库代码或可重用的业务逻辑。我经常将实用程序类和验证逻辑以及与从 DBContext 实体获得的数据一起使用的任何功能放在此处。

于 2013-07-03T10:30:49.857 回答
0

一种解决方案是使用 MVC 作为表示层(就像您现在正在做的那样)。在您的 MVC 内部,有时模型对您来说不够用,在这种情况下您需要创建 ViewModel。您可以将 ViewModel 移动到业务层,在这种情况下,当 BLL 从 DAL 检索数据时,它会将其转换为具有某些功能和默认值的 ViewModel,然后将其发送到表示层。一旦表示层完成使用虚拟机,它将数据传递给 BLL,BLL 可以执行一些特殊的验证和一些额外的业务逻辑。之后,它将通过从 VM 中提取数据来创建模型并将其传递给 DAL,DAL 可以执行事务更新、删除或插入。

通常我的解决方案至少有五个项目。我有 API 项目、MVC、业务层、数据访问层和资源。

API

这个项目包含模型、接口、抽象类等。本质上它包含了其他层需要实现的一切。通常有 IRepository 用于存储库模式实现,IUnitOfWork 用于工作单元模式,由实体框架或手动生成的模型(但没有映射)。ViewModels 也在这里与用于转换模型和从模型转换的扩展方法一起。

业务服务层

该层负责从数据访问层获取数据,通过调用扩展方法将其转换为视图模型,初始化值。此外,如果 DAL 返回 null 值,则业务服务层不会将其作为 null 传递给表示层,而是会返回 Null 对象模式的实现。空对象模式实际上是在 API 中实现的,由业务服务层调用。该层引用 API 层。

数据访问层

在这里,您通常实现存储库和工作单元模式。您无需直接与 EF 通信,而是将对 DbContext 的调用包装到这两个实现中。除此之外,从模型到 SQL Server 表和列以及外键的映射都在这里完成。该层引用 API 层。

资源

所有资源、字符串、语言翻译等都位于此处。该项目不引用 API,但业务服务层、数据访问层和表示层引用该项目来访问字符串。

表示层

这通常是一个 MVC 解决方案(或者如果它是 Web 表单,那么它将使用 MVP 模式实现)。该解决方案与业务服务层通信。它从业务层接收 ViewModel 并返回值。如果视图模型对业务层有效,它会将它们传递给业务层,以使它们持久化。

链接层

这些层使用依赖注入相互连接。我通常使用 Unity 并使用外部配置设置来配置我的应用程序。这样表示层、业务服务层和数据访问层没有显式引用。MVC 没有对 BLL 的直接引用,BLL 没有对 DAL 的直接引用。控制器和 BLL 和 DAL 类的构造函数使用接口,并且统一传递适当的实现。

于 2013-07-03T10:46:09.287 回答