0

当我开发 WinForms 或 WebForms 应用程序时,我会创建一个解决方案并添加多个项目。BOL 项目是一个用于业务对象的类库,有一个用于 ADO.NET 相关内容的 SQL 和一个 DAL 项目,我有一个实用程序项目,其中包含用于验证等内容的类。现在我通常称之为 GUI 的表示层包含了表单。这些表单直接与 BOL 一起工作,BOL 连接到连接到 DAL 的 SQL 等......

我相信你们都已经知道了,所以这就是我感到困惑的地方。在使用 MVC 时,我看到的项目都包含这种类型的功能,但都在一个项目中,只是分成文件夹。我查看了 Nerd Dinner 应用程序,甚至这一切都在一个项目中。最终结果是一个 DLL 来处理这一切。这是一个好主意,还是你们将这些部分分成不同的项目?通常一个 DLL 必须通过另一个 DLL 才能达到数据访问 DLL 类型的东西。也许我只是对整个概念感到困惑。

4

1 回答 1

2

您始终可以将此逻辑层分成单独的物理层(项目)。您可以为您的实体创建一个单独的项目,为您的数据访问代码创建一个项目等。

这是我为我最近的一个项目所做的结构

1) UI:标准的 MVC 项目,带有 UI 相关的东西。控制器和视图以及相关的 CSS 内容和脚本。

2)实体:类库项目。我的业务实体在这里。这些只是代表我的域模式的 POCO(我将其用于 CodeFirst 数据库生成)。

3)数据访问:类库项目。我在这里有我的数据访问代码。存储库、接口和我的 DBContext 类也是如此。

4)测试:我的单元测试在这个项目中。

UI 项目引用了我的实体和我的数据访问项目。

数据访问项目引用了我的实体,因为我的存储库方法返回对象。

我的 UI 项目 ViewModels 文件夹中也有几个 ViewModel 类。我在某些屏幕上使用它,我必须显示来自多个域对象的数据。我有一个映射/服务类,它将域对象映射到视图模型对象。如果您的项目是 bifg,您可以将其作为一个单独的项目保留在同一解决方案下。

解决方案看起来像这样。(这是我正在做的一个开源项目)

在此处输入图像描述

于 2012-06-05T21:39:56.570 回答