谁能告诉我 N 层和 N 层架构有什么区别。我知道 3 层架构有 3 层:UI、业务逻辑层(BLL)和数据逻辑层(Dll)
但是现在,我的问题是什么是 N-Tier 和 N-Layer,它们之间有什么区别。
此外,就 C# 而言,这些如何与一层到另一层交互?
这是不一样的。层是软件架构的概念——你如何组织你的代码。层是硬件架构的概念——什么机器运行你的代码的一部分。
层定义了逻辑分离。如果你有 3 层,这意味着你有系统的 3 个独立部分,每个部分负责不同的事情。
层定义层之间的物理分离。这并不意味着这必须驻留在不同的机器中,而是意味着这些部件是独立的,可以单独安装和使用。
这是关于抽象的。
阅读维基百科关于多层架构的文章,它会告诉你,层与层确实是关于软件与硬件的。但这并没有严格遵循,因为窥视OSI 7 层模型会向您展示(它不是所有的软件,但他们无论如何都称它们为所有层)。真的,这不是重点。抽象是重点。
无论是层还是层,每一层都专注于一个明确的职责,并尽可能少且尽可能简单地连接到相邻层。保持连接少且简单(松散耦合)允许在不干扰其他关卡的情况下交换关卡的替代实现。这个技巧在硬件中的作用与在软件中的作用相同。
那么,如何在 C# 中与一层交互呢?这真的取决于你在做什么。您的所有 C# 代码都可以是协调 html 表示层与 SQL 数据库层之间交互的逻辑层。或者它可能是您在具有模型视图控制器设计的游戏中有许多层。在这种情况下,所有层都在 C# 中。或者它可能只是三个类做三种不同的事情。但前提是它们连接正确。使它们成为“层”或“层”的原因是 1 级必须经过 2 级才能到达 3 级。1 不与 3 对话,3 也不与 1 对话。
但真正使它起作用的是抽象。一个好的数据库层可以通过隐藏逻辑层不需要的细节来更轻松地更新和查询数据库。删除这些细节使逻辑代码更易于编写和阅读。
这与我们在汽车上安装引擎盖的原因相同。您可以取下引擎盖,坐在发动机缸体上,将一根杆卡在齿轮齿条总成中,抓住油门拉线,然后驾驶汽车。由于引擎盖不再妨碍您,您现在可以做一些令人惊奇的事情,例如以每小时 60 英里的速度更换机油。尽管如此,我认为您会发现在引擎盖在方向盘上和后面的情况下驾驶会更舒适,所有这些发动机细节都被抽象掉了。