有人能告诉我N层和N层架构的区别吗?我知道3层架构有3层: UI,业务逻辑层(BLL)和数据逻辑层(Dll)
但现在,我的问题是什么是N-Tier和N-Layer,以及它们之间的区别。
另外,在C#方面,这些如何与一层到另一层交互?
发布于 2014-10-15 12:42:45
这是不一样的。层是软件架构的概念--你如何组织你的代码。层是硬件架构的概念-什么机器运行你的代码的一部分。
发布于 2014-10-15 13:04:31
层定义了逻辑分离。如果你有3层,这意味着你有3个不同的系统部分,每个部分负责不同的事情。
层定义了层之间的物理分隔。这并不意味着它必须驻留在单独的机器中,但它意味着这些部件是独立的,可以独立安装和使用。
发布于 2014-10-15 13:11:07
它是关于抽象的。
阅读wikipedia's article on multitier architecture,它会告诉你layer vs tier实际上是关于软件和硬件的。但这并没有严格遵循,因为看一眼OSI 7 layer model就会告诉你(它不是所有的软件,但不管怎样,他们叫它们所有的层)。真的,这不是重点。抽象是重点。
无论是层还是层,每一层都专注于一个明确的职责,并尽可能少地和尽可能简单地连接到相邻的层。保持连接的数量少且简单(松散耦合),可以在不干扰其他实现的情况下交换出某个级别的其他实现。这个技巧在硬件中的作用与在软件中的作用相同。
那么,如何在C#中与一层到另一层进行交互呢?这真的取决于你在做什么。所有的C#代码都可以是逻辑层,协调html表示层和SQL数据库层之间的交互。或者,您可以使用model view controller设计在游戏中包含多个层。在这种情况下,所有的层都在C#中。或者,它可以简单地由三个类来完成三个不同的任务。但前提是它们连接正确。它们之所以成为“层”或“层”,是因为1级必须通过2级才能到达3级。1不能与3通信,3不能与1通信。
但真正让它工作的是抽象。一个好的数据库层通过对逻辑层隐藏不需要的细节,使得更新和查询数据库变得更容易。删除这些细节会使逻辑代码更易于编写和阅读。
这和我们给车装引擎盖的原因是一样的。你可以脱下引擎盖,坐在发动机机体上,在齿条和小齿轮总成中卡住一根杆子,抓住油门电缆,然后驾驶汽车。由于引擎盖不再挡路,你现在可以做令人惊叹的事情,比如以每小时60英里的速度更换机油。尽管如此,我认为你会发现你驾驶更舒适的引擎盖和后面的方向盘与所有这些发动机的细节抽象。
https://stackoverflow.com/questions/26374546
复制相似问题