2013-12-22 27 views
1

用于客户 - 服务器范例三层软件体系结构具有三个不同的层组成:封装在一个三层的软件体系结构层为客户端 - 服务器

  1. 表示层 - 阿层用户可以直接访问,如UI或网页。也称为客户端。

  2. 应用层 - 该层封装业务逻辑(例如,业务规则和数据验证),域的概念,数据访问逻辑等也称为中间层。

  3. 数据层 - 存储应用程序数据的外部数据源,如数据库服务器。

为什么将独立层的逻辑封装在单独的软件模块中有利?

回答

5

有几个原因需要将单独图层的逻辑封装在单独的软件模块中。

1.它迫使你练习分离问题/ SRP。

这匹马已被殴打致死,所以我会reference otherStackOverflow questions。 如果你真的在不需要太多耦合的情况下在不同的文件/模块中保持不同的关注点,你将会是一个更开心的开发者。直到你看到一个30,000行的“God Class”完成了所有工作,并且不可能添加或删除功能,修复错误或重构,你还没有看到过地狱。

2.它可以帮助你把你的代码分解成可管理的块。

一段时间以来,编码器已经将代码分解为不同的模块,因为它有助于我们理解全局。您通常需要模块为您提供的结构和形容词,一旦您的系统超出小尺寸,或者您需要与其他开发人员合作。

3.它可以帮助您将代码分发到未来的不同机器/体系结构中。

将您的软件放入不同的模块可以使它更容易将它们分发到不同的机器上(即分布式计算)。如果您的模块没有共享状态并且没有过度耦合,您可以将这些模块移到不同的机器上。它不会自动执行此操作,但您仍然必须处理接口(rpc/services/etc)和all the fun of distributed computing

注意:如果你过度耦合你的模块,你可以轻松避开所有这些好处。通常,您希望您的最小模块耦合遵循数据流向(即表示层不应与数据库交谈)。

+1

谢谢你。非常有帮助。感谢Matthew也在那里 – Kaylo17

2

伟大的答案,亚历克斯。我还要补充:

4。它允许你建立多个客户端

想想像Facebook这样的应用程序。有一个Web应用程序,iPhone应用程序,Android应用程序等。当应用程序以这种方式分离时,开发人员只需要为iPhone,Android和任何其他新客户端重新提供应用程序。当单独的iPhone和Web页面对同一个应用程序层(例如通过REST)进行对话时,可以确定业务规则在所有平台上的应用都相似。

当您在应用程序中耦合视图特定逻辑(编译HTML)时,您的新iPhone应用程序可能需要对此进行破解,因为它不关心HTML。或者,如果您在视图图层中使用了业务逻辑(对一系列数据执行多个计算),那么您的新iPhone应用程序很可能必须复制此代码;当计算需要改变时将导致未来潜在的错误。

+0

是的,这也是^^ –