1

嘿伙计们,我已经用 C++ 编写了一个学期的 OOP,而我刚刚开始使用 C#。我仍然不完全了解如何将图层彼此分开以及在哪里做什么。据我了解,有以下几层:

存储 -> 数据访问 -> 业务逻辑 -> 命令处理器 -> 用户界面

现在我似乎无法完全理解每一层的责任是什么..

我了解数据访问仅包含诸如添加、更新、删除、查询之类的方法,并且数据访问并不关心它插入了什么,它只是接收对象作为参数并对其进行任何处理。业务逻辑是否从命令处理器发送的数据创建对象,命令处理器从用户界面获取它并对其进行输入验证?

另外,我将如何发送和接收不同的命令,例如查询命令与插入命令有何不同,因为它需要发回数据。

正如您可能会说的那样,我很迷茫,而且我一直很难找到关于这个主题的好的教程。

谢谢!

编辑。

我试图从数据访问层查询方法开始。我将三个子对象存储在父类型的通用列表中。

我有不同的查询选项,其中之一是类型。所以我需要搜索父列表并返回每个对象的数据,如果它是指定的类型。我的父对象有一个被覆盖的 ToString() 以及我的子对象,它们调用父对象 ToString() 以将对象的所有数据放入一个字符串中。我在这里做业务逻辑职责吗?此外,当我获得与我的类型匹配的对象列表并尝试使用 foreach 调用 ToString() 进行迭代时,它只会调用父 ToString() 我猜?

public string Lookup(Types type)
{
List<Parents> search = new List<Parent>();


switch (type)
{
case Types.TypeOne:
{
search = ParentDataBase.FindAll( delegate(Child1 findChild) { 
return findChild is ChildOne; } );

}
break;
case Types.TypeTwo:
{
search = ParentDataBase.FindAll( delegate(Parents findChild) { 
return findChild is ChildTwo; } );
}
break;
case Types.TypeThree:
{
search = ParentDataBase.FindAll( delegate(Parent findChild) { 
return findChild is ChildThree; } );
}
break;
}
string results = "";

foreach (Parent x in search)
{
results += t.ToString();
}
return results;
}
4

1 回答 1

4

问题中出现的箭头令人困惑,因此在讨论期间我将更改它们。

所以只让我放两个链接,所以在提到它们时尝试搜索CRUDMVC架构。

让我们一步一步来:

存储 -> 数据访问

这通常由ORM处理。ORM 将处理数据库访问。

您创建的 ORM 加上自定义(模型)对象允许抽象数据访问。这看起来像:

ORM 将数据传入和传出数据库以使其可用。ORM 可以为您处理CRUD操作,因此查询、更新和插入不会出现在代码的其他部分。

商业逻辑

业务逻辑通过访问、修改和保存数据来处理数据。

业务逻辑可以访问您的模型以完成数据的访问和保存。

修改部分在业务逻辑中实现。

业务逻辑可以是小型的、大型的,也可以是其他业务运行器的组合。

我们的图表现在看起来像:

数据库 <- ORM -> 模型 <- 业务逻辑

命令处理器

命令处理器运行业务逻辑片段并将整个系统的片段修补在一起,有时在MVC中称为控制器

数据库 <- ORM -> 模型 <- 业务逻辑 <- 命令处理器

用户界面

用户界面(UI)可以分为两部分,数据表示和用户输入。

数据表示在 MCV 中称为视图,负责获取数据并使其可供用户阅读。

用户输入触发命令处理器的各个部分。

总体:

                                                                ,-> View
Database <- ORM -> Models <- Business Logic <- Command Processor
                                                                `<- User Input
于 2012-09-20T03:57:30.013 回答