2010-05-29 19 views
1

N层体系结构只是代码的物理分离还是还有更多的东西?N层体系结构只是代码的物理分离还是还有更多的东西?

我们在表示层,应用层,业务逻辑层,用户界面逻辑,数据访问层,数据访问对象,什么类型的编码?

上面提到的所有层都可以提供全功能的N层体系结构吗?

一种情况:

每当用户点击一个按钮,加载通过AJAX内容,它们我们就编码来请求一个HTML输出,然后更新元素,所以没有这个JavaScript编码也位于不同梯队?因为如果N层体系结构真的关于代码的物理分离,那么我认为它更好地分离JavaScript编码。

回答

4

层和层是完全不同的东西。

N层较少关于代码分离,更多关于可伸缩性。这个想法是,你可以根据需要轻松扩展不同的“层”。大多数网站是2层:网络服务器和数据库服务器。有时候他们会选择3,采用面向服务的体系结构。

图层是关于代码分离和可重用性的。 MVC是分层代码的一个很好的例子。

除了所有这些之外,在您快乐地在代码的不同部分之间设置障碍之前,您真的需要问自己两个问题:您是什么分离以及为什么关注它?如果你不能给这两个人(特别是第二个)提供坚定的答案,那么我会说停止你的行为并退出键盘。而且,通过坚定的回答,我不是故意的,“因为bob说这是它应该工作的方式。”

花时间真正了解正在发生的事情,代码和理智如何通过设置这些障碍而受到影响。如果他们帮忙,好极了;如果他们不这样做,那么很好..

+0

我们在表示层,应用层,业务逻辑层,用户界面逻辑,数据访问层,数据访问对象,什么类型的编码? – Starx 2010-05-29 06:24:33

+0

@Starx:如果不能很好地理解你正在完成什么以及在以后需要什么样的项目,那么这个问题很难回答。此外,您使用的工具如ORM(如果有),数据库服务器(关系数据库,nosql数据库,甚至品牌数据库)等都会影响您放置的东西。 虽然简短的回答是问自己“这段代码做了什么?” UI特定的代码(像大多数的JavaScript,HTML,CSS,WPF,闪存等)属于表示层。数据验证,关系执行等可能在业务逻辑层或其他地方。 – NotMe 2010-05-29 20:19:16

1

我听说层和层之间的差异描述的是,层可以在不同的机器上,而层可能不(我也听说过反向使用的术语)。因此,n层意味着n层。例如,数据库服务器代表一个独立的层,但只有一个业务逻辑库,不能在独立于表示代码的机器上运行,只是层的分离。如果业务逻辑是通过一个服务层来访问的,该服务层可以被托管在与表示代码不同的机器上,那么它将如名称所暗示的那样代表一个单独的层。

N层意味着将代码分离成可能仍然需要在同一台物理机器上运行的库。 N层代表将代码分离成可能在单独机器上运行的服务,即使可以在同一台机器上运行它们。

加成

表示层将包含与显示信息给用户的内容。例如,在MVC中,该层被细分为从业务逻辑层(模型)检索信息的控制器和显示信息本身的视图。数据访问层将包含用于从数据层检索信息的代码。业务逻辑层将包含从数据层检索信息的代码,将该信息处理成对象模型,该对象模型对业务规则进行解释并使其可以像表现层一样提供给层级。

层级背后的推理是它们提供了与下面一级的分离程度。例如,假设数据层发生了变化,或者更具体地说,数据库产品发生了变化。它只需要更新数据层而不是整个代码库。

使用我提供的定义,例如没有调用服务的标准数据库驱动的网站实际上只具有表示层和数据层(数据库),即使它具有多个表示层,中间层和一个数据层。如果您有服务电话,取决于他们被称为的位置,他们将代表另一层。

+0

我们在表示层,应用层,业务逻辑层,用户界面逻辑,数据访问层,数据访问对象,放置了什么样的编码? – Starx 2010-05-29 06:24:56

+0

@ Starx-我修改了我的帖子来解决你的问题。尽管我没有提到它,但是在许多情况下可以使用数据访问对象。通常,它用作在中间层和数据层之间传递信息的手段。即,数据层从数据层中检索数据并使用数据访问对象传递到它上面的层。如果你的数据层返回DataTables,那么DataTable就是你的数据访问对象。 – Thomas 2010-05-29 15:57:15

相关问题