Architecture 如何构建三层解决方案?

Architecture 如何构建三层解决方案?,architecture,3-tier,Architecture,3 Tier,我在解决方案中使用FluentNHibernate。fluentnhibernate文档中推荐的文件夹结构如下: Entities文件夹,其中包含业务模型的POCO类。 Mappings文件夹,其中包含到数据模型的映射 我假设这两个文件夹将进入一个名为“BusinessModel”的业务层项目?见下文: BuessinessModel |_ Entities |- Student.cs |- Course.cs |- Facul

我在解决方案中使用FluentNHibernate。fluentnhibernate文档中推荐的文件夹结构如下:

Entities文件夹,其中包含业务模型的POCO类。 Mappings文件夹,其中包含到数据模型的映射

我假设这两个文件夹将进入一个名为“BusinessModel”的业务层项目?见下文:

BuessinessModel
    |_ Entities
          |- Student.cs
          |- Course.cs
          |- Faculty.cs
    |_ Mappings
          |- Mappings.cs
也许可以创建另一个名为“DataAccess”的项目,它引用数据访问层的BusinessModel项目来执行CRUD

最佳做法是什么?有建筑师吗?谢谢


AK:我在上读了你的帖子

让我引用你的话

以“人”为例:思考不同的数据 与个人相关的操作(获取单个用户的所有数据) 个人,许多人的浅层数据集合,CRUD 操作、搜索等)-然后按照逻辑顺序设计接口 分组

我正在努力理解这一点。那么,你是这么说的

  • 在BLL项目中,我们有这个Person类

  • 同样在BLL项目中,我们有一个声明所有数据的接口 Person对象将需要的操作方法

  • 然后在DAL项目中,我们具体实现了 我们在BLL中定义的接口

    这听起来对你正确吗?谢谢


  • 盲目地将相同的体系结构应用于每个解决方案/项目是危险的;我的标准/默认方法如下:

    高级别

    • 我们的目标是3层,我们假设它们是:UI、BL(业务逻辑)、DA(数据访问)
    • 这将(可能)由以下4个组件的逻辑块(想想名称空间)组成:Common、UI、BL、DA。请记住,这4个块中的每一个都可能有多个代码级项目
    • 常见的是,我们将粘贴其他3个需要共享的东西,例如POCO
    您的具体信息

    • 将BusinessModel(可能作为一个独立的项目)放在Common中
    • 我猜映射依赖于物理数据源,因此这应该进入具体的DA实现
    其他注释

    • 最佳/常见的做法是松散地耦合我们的主要块(特别是BL和DA);通常使用依赖注入
    • 这将通过定义Inferfaces来实现,这些接口将/可以使用POCO或您的业务模型实体-从通用接口

    您需要将具体的数据访问与业务层分离,最好创建一个具有实体(域模型)和存储库接口的业务层

    然后创建数据访问的具体实现,其中包括使用fluentnhibernate进行数据访问的映射和具体存储库

    热度 |_实体 |-学生会 |-课程名称 |-理工学院 |_存储接口 |-IStudentRepository.cs |-ICourseRepository.cs

    DAL(混凝土-使用氟纤维酸盐) |_映射 |-映射.cs |_存储库 |-StudentRepository.cs
    |-CourseRepository.cs

    谢谢,这很有帮助。我是在所有层中定义接口还是仅在DA层中定义接口?有什么好文章吗?我知道我可以用谷歌搜索,但我肯定我会找出一大堆,不知道哪一个对我帮助最大。谢谢,妈妈。这很好。我有点明白了。假设我有一个小的解决方案,每个层只有一个项目,那么在业务模型中,我有POCO和存储库接口。那么,在DAL中,具体的存储库类实际上实现了在业务层中定义的存储库接口?你能确认一下吗?我认为这将帮助我在正确的方向上组织我的解决方案结构。再次感谢您。是的,您完全正确,在业务模型中有POCOs和存储库接口,在dal项目中有具体的存储库具体类来实现该接口。您还可以找到许多实现此体系结构的DDD示例。。看看我一直在开发的这个解决方案,它有点复杂,但它会给你一个想法