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