N-Tier架构只是代码的物理分离还是还有更多的东西?
我们在表示层,应用层,业务逻辑层,用户界面逻辑,数据访问层,数据访问对象中添加了哪些编码?
上面提到的所有图层都可以提供功能齐全的N层架构吗?
一个案例:
每当用户点击按钮通过AJAX加载内容时,我们会编码获取特定的HTML输出然后更新元素,那么这个JavaScript编码也会位于不同的层上吗?因为如果N层架构真的是关于代码的物理分离,那么我认为它更好地将JavaScript编码分开。
答案 0 :(得分:4)
层和层是完全不同的东西。
N层不是关于代码分离,而是关于可伸缩性。我们的想法是,您可以根据需要轻松扩展不同的“层级”。大多数网站是2层:Web服务器和数据库服务器。有时他们会使用面向服务的体系结构进入3。
图层就是代码分离和可重用性。 MVC是分层代码的一个很好的例子。
除了所有这些之外,在你快乐地在代码的不同部分之间设置障碍之前,你真的需要问自己两个问题:你在分离什么,为什么你关注它?如果你不能给这两者(特别是第二部分)提供坚如磐石的答案,那么我会说停止你做的事情并退回键盘。通过坚如磐石的答案,我并不是说“因为bob说这是应该运作的方式。”
花时间真正了解正在发生的事情,如何通过设置这些障碍来影响代码和理智。如果他们有帮助,那很好;如果他们不这样做,那么......
答案 1 :(得分:1)
我听说层和层之间的差异的方式是层可以在不同的机器上,而层可能不是(我也听过反向使用的术语)。因此,n层意味着n层。例如,数据库服务器代表一个单独的层,但只是有一个业务逻辑库,它不能在与表示代码分开的机器上运行,只是层的分离。如果通过服务层访问业务逻辑,该服务层可以托管在与表示代码不同的机器上,那么顾名思义,它将代表一个单独的层。
N层只是意味着将代码分离到可能仍需要在同一物理机器上运行的库中。 N层代表将代码分离为可能在不同机器上运行的服务,即使可以在同一台机器上运行它们。
<强>加成强>
表示层将包含与向用户显示信息相关的任何内容。例如,在MVC中,该层被细分为从业务逻辑层(模型)检索信息的控制器和显示信息本身的视图。数据访问层将包含用于从数据层检索信息的代码。业务逻辑层将包含从数据层检索信息的代码,将该信息处理为对象模型,该对象模型考虑业务规则,并使其可用于层上方的层,如表示层。
层级背后的原因是它们与下面的层级提供了一定程度的分离。例如,假设数据层已更改或更具体地说,数据库产品已更改。它只需要更新数据层而不是整个代码库。
使用我提供的定义,一个标准的数据库驱动的网站,例如没有服务调用,实际上只有一个表示层和一个数据层(数据库),即使它有多个表示层,中间层和一个数据层。如果您有服务呼叫,则根据呼叫的位置,它们将代表另一个层。