我们真正需要3层体系结构的例子是什么?大多数使用3层体系结构的应用程序可以使用2层体系结构完成吗?
注意:我正在尝试看到3层体系结构的价值,我觉得现在有3层的应用程序可以在2层中完成,所以我正在寻找我们绝对需要3层的例子,而且这种需求也不例外。
发布于 2009-10-25 15:51:19
我猜您指的是分层(逻辑分离单元),而不是分层(物理分离/部署单元)。分层系统的一个例子是提供网页(另一层)的web服务器(1层),它利用来自数据库(第3层)的数据。
分层架构的通常目标是分离责任。这有两个关键好处(除其他外)。
首先,您的设计将更加清晰,因为责任不会被混淆,因此代码将更容易阅读、理解和维护。
其次,你有可能减少重复--例如,在一个web应用程序中,如果你的页面也在处理业务逻辑(或者恐怖的数据访问)以及显示页面,那么你可以相当肯定的是,多个页面将尝试做相同或类似的事情。
您不需要来架构任何软件(例如,分层,尽管有其他方式),但是对于任何除了琐碎的事情之外的任何东西,如果不这样做,结果将是一个无法维护的烂摊子。
发布于 2009-10-25 16:06:46
FinnNk的道具,但让我举一个例子,说明当您不分离您的层时会发生什么。多年来,我一直致力于一个在出生时就被严重分离的项目。如果您相信tuinstoel所说的,那么这三个层次--更多的层--都集中在单独的JSP页面中。我相信这在当时似乎是一件聪明的事情(刚开始的时候编写代码更快),但是这种怪物已经增长了,没有人花时间去重构。
现在我们有了2000+ JSP页面,重复的代码散落在各处。进行模式更改需要仔细的回溯,以确定哪些页面可能受到影响,并对每个页面进行单独的测试。管理层没有人认为花时间解决这个问题是很重要的--短期收益,长期亏损。
做。不。去。这。路由。
将层分离导致更好、更快、更可测试、更模块化的代码。你会为此感谢你自己,(更重要的是)你身后的人也会为此感谢你。
发布于 2010-08-31 03:46:11
一些数据库向外界公开rest接口,例如NoSQL数据库CouchDB和RavenDB。这意味着运行在浏览器中的Javascript可以在没有中间层的情况下调用数据库。
参见例如:http://www.infoq.com/news/2010/06/couchdb
“行为良好的HTTP接口和applications两层应用程序(浏览器中的html+javascript+ couch+javascript作为服务器)”
Oracle内部有一个web服务器,您可以使用存储的procs向外部公开rest接口。因此,浏览器中的JavaScript也可以调用Oracle数据库,而不需要中间层。
当您只想从数据库中获取一些数据时,总是需要中间层吗?我对此表示怀疑。
(TTT,前称Tuinstoel)
https://stackoverflow.com/questions/1621206
复制相似问题