我已经注意到,多年来,不同的开发商有什么构成的n层系统的发展层次,所以我很好奇的共识是在这里计算器什么不同的标准。

时不同的逻辑层足以称之为一个单独的层或它有以称之为一个单独的层是可部署在单独的服务器上(物理或虚拟)?

让我词组的问题有点不同。如果调用机制只能在进程,线程局部,或公寓的地方,然后才可能声称,它是依赖于类是如何组织到库或包两个不同的层次?

有帮助吗?

解决方案

对我来说,物理层是指系统的一部分,设计要被不同的物理机器上运行。是的,您可以将DB连接字符串指向随时另一台服务器,但如果你的DAL过于健谈,有n + 1和无限的记录集的问题,比网络延迟会杀了你的真快。

逻辑层,在另一方面,支持的顾虑,凝聚力和耦合分离美德。严格,它甚至不必须在单独的程序 - 命名空间会做的伎俩。只是不叫班,你知道你不应该,NDepend的帮助你。

其他提示

一个单独的逻辑层是足以让我称之为层。它不必是一个单独的服务器,但来自其他层所定义的分离当然使其成为可能。

作为一个例子,我们曾经有过我所说的一台服务器上运行的3级制(DB,DLL,ASP页)。通过一些定义,这是一个等级制度。我们现在已经在数据库单独的服务器上运行,唯一需要改变的是一个连接字符串,但现在这将是一个两层的解决方案?

这就是为什么我觉得一个层次的概念,更多的是在独立的机器上运行,而不是实际具有的能力。它只是在我看来,更一致的。

  

层和层的概念是   经常互换使用。然而,   的视图中的一个相当普遍的一点是   这的确有差异,   一个层是一个逻辑结构   机制,使要素   该软件解决方案,而一线   是一种物理结构化机构   该系统的基础设施

参考

层是用于最小化耦合的机制;他们是合理的。层级旨在最大限度地提高性能或否定的安全隐患;他们是物理。他们真的不是他们一样,我不知道为什么人们尝试交替使用它们。

绝大多数web应用程序是3层由默认(浏览器,web服务器,数据库服务器)。多数内部网应用的是2层(客户端,DB服务器)。但是在这两种情况下,我建一个UI层,业务层和数据层。他们的关注点分离,并帮助我组织我的代码的可维护性。此外,在这两种情况下我通常最终会在一台机器中部署他们所有; Web服务器或客户端工作站。因此,层和层甚至不匹配。

我始终认为一个层是在一个体系结构,这意味着,一台机器的任何物理分离。我发现,这些家伙想的一样最近,这是一个很不错的书。

但阅读其他的回答,我用加里同意后想好该

我会同意加里Shutler但添加许多层也可能存在在单个进程/线程或甚至相同组件。比物理(硬件,可执行隔离,或二进制隔离)更重要的分离是用于显影剂(IMHO)代码的布局。如结合一个ASPNET应用:同样一个DLL可以具有所有三个层次在它:数据访问,域和呈现

我不得不说的是,定义需要敲定。我认为通常层级作为功能和责任的逻辑分离和层作为要求或能力的物理分离的。一些层可以有多个层次和一些层级可以跨越层。我通常使用在必要时和/或通过配置所希望的,其具有以提供物理分离的能力的服务层的层。

那么,跟进问题/评论。如果在程序存储在数据库中一堆逻辑的(商业或其他),应该说算是一个层次呢?如果你正在使用什么样的服务代理您的数据库引擎的Microsoft SQL Server的功能?可被视为具有两个层次本身。

此外,后台服务和/或守护程序,它们是单独的层和/或层或他们属于一个现有的?

看在计算的术语“层”的历史。没有人说在台式机/迷你/大型机1层计算。没有人说在客户端 - 服务器天2层计算。 3层成为客户端 - 服务器加中间件建筑绰号在(面向消息的中间件和交易的经纪人)之间。我认为,n层与另一术语普及沿着“EAI - 或企业架构整合”。正是同样的想法,作为面向服务的架构,除了大部分的厂商实现的要么专有的,基于标准,但非常昂贵,或两者兼而有之。之后XML-RPC,SOAP和REST一起走,他们称之为“Web服务”,然后应用背后的EAI原则上来SOA - 面向服务架构和企业服务总线。

我的观点是,没有这些术语暗示的任何物理分离的...它总是大约的功能的逻辑分离。正巧,许多这些逻辑应用层的设计是无状态的,这样他们可以为横向扩展的目的,在物理上分离。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top