首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >3层架构问题

3层架构问题
EN

Stack Overflow用户
提问于 2011-02-26 20:24:36
回答 6查看 3.3K关注 0票数 2

我正在尝试使用ASP.NET和C#来创建简单的三层架构应用程序。我遇到了一个循环依赖的问题。我在业务层上有学生班。我有一个到表示层的接口,其中包含这些方法:

代码语言:javascript
复制
void SaveStudent(Student student);
Student[] GetStudents();

这看起来没问题。

但我也使用这些方法实现了从数据访问层到业务的接口:

代码语言:javascript
复制
void InsertStudent(Student student);
Student[] ReadAllStudents();

问题出在学生课上。因为我的业务层依赖于DAL,所以我不能从我的数据访问层引用业务层。我知道DAL不应该依赖于业务层。但是不知道如何解决这个问题。

那么我应该如何传递数据呢?

如果我将Student类放到DAL,那么我的表示层将被迫依赖于数据访问层,这是不好的。

我以前从来没有尝试过做三层架构。

如何解决这个问题?如果需要,可以随意更改我的接口方法。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-02-26 20:45:27

这个问题通常可以通过将您的Student类放在一个单独的模型程序集中(随您喜欢怎么叫它)来解决,该程序集将在所有层之间共享。在大规模的n层体系结构中,这些类通常只包含数据,通常称为数据转换对象(DTO)。作用于这些对象的任何业务逻辑都将保存在业务层(BL)中,业务层通常作为服务(即WCF)公开。服务只是一个中介,即使所有代码都在同一台机器上,甚至在同一进程中,您也可以这样设计。至少,您希望在组装级别分离您的关注点(UI、业务层、DTO、DAL)。

在您的示例中,GetStudents方法将在业务层服务上公开,并将返回Student DTO。业务层将保存对数据访问层(DAL)的引用,它将在该层上调用InsertStudent。同样,正如我已经说过的,DAL和BL都引用了Models程序集,但最重要的是,DAL不依赖于BL。

客户端-->业务层服务-->数据访问层

<->

票数 4
EN

Stack Overflow用户

发布于 2011-02-26 20:29:03

n-tier体系结构中的关键概念是n-th层只知道n+1-th层。因此,您的用户界面将调用业务逻辑,业务逻辑将调用数据访问层。

票数 2
EN

Stack Overflow用户

发布于 2011-02-26 20:29:02

您不应该从DAL调用到BLL (业务逻辑层),恰好相反。

代码语言:javascript
复制
// Will contain details about your UI - taking data from text fields, etc
// and passing it to the business object
class Student_UI    
{
  Student_BL _blObject = new Student_BL();

  void SaveStudent()  
  {  
    Student student = new Student();
    // Get student details from UI...
    _blObject.SaveStudent(student);  
  }  

  DisplayStudents()  
  {  
    Student[] students = _blObject.GetStudents();  
    // display students...
  }  
}

class Student_BL
{
  Student_DAL _dalObject = new Student_DAL();

  void SaveStudent(Student student)  
  {  
    _dalObject.InsertStudent(student);  
  }  

  Student[] GetStudents()  
  {  
    return _dalObject.ReadAllStudents();  
  }  
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5126884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档