我听说层和层之间的差异描述的是,层可以在不同的机器上,而层可能不(我也听说过反向使用的术语)。因此,n层意味着n层。例如,数据库服务器代表一个独立的层,但只有一个业务逻辑库,不能在独立于表示代码的机器上运行,只是层的分离。如果业务逻辑是通过一个服务层来访问的,该服务层可以被托管在与表示代码不同的机器上,那么它将如名称所暗示的那样代表一个单独的层。
N层意味着将代码分离成可能仍然需要在同一台物理机器上运行的库。 N层代表将代码分离成可能在单独机器上运行的服务,即使可以在同一台机器上运行它们。
加成
表示层将包含与显示信息给用户的内容。例如,在MVC中,该层被细分为从业务逻辑层(模型)检索信息的控制器和显示信息本身的视图。数据访问层将包含用于从数据层检索信息的代码。业务逻辑层将包含从数据层检索信息的代码,将该信息处理成对象模型,该对象模型对业务规则进行解释并使其可以像表现层一样提供给层级。
层级背后的推理是它们提供了与下面一级的分离程度。例如,假设数据层发生了变化,或者更具体地说,数据库产品发生了变化。它只需要更新数据层而不是整个代码库。
使用我提供的定义,例如没有调用服务的标准数据库驱动的网站实际上只具有表示层和数据层(数据库),即使它具有多个表示层,中间层和一个数据层。如果您有服务电话,取决于他们被称为的位置,他们将代表另一层。
我们在表示层,应用层,业务逻辑层,用户界面逻辑,数据访问层,数据访问对象,什么类型的编码? – Starx 2010-05-29 06:24:33
@Starx:如果不能很好地理解你正在完成什么以及在以后需要什么样的项目,那么这个问题很难回答。此外,您使用的工具如ORM(如果有),数据库服务器(关系数据库,nosql数据库,甚至品牌数据库)等都会影响您放置的东西。 虽然简短的回答是问自己“这段代码做了什么?” UI特定的代码(像大多数的JavaScript,HTML,CSS,WPF,闪存等)属于表示层。数据验证,关系执行等可能在业务逻辑层或其他地方。 – NotMe 2010-05-29 20:19:16