architecture - 三层网络架构 : Are Layers on Separate Machines Beneficial?

标签 architecture coding-style

我工作的一个客户有一个标准,他们要求将新应用程序的数据层包装到 Web 服务中,并将一台机器与托管业务/表示层的位置分开。有人能告诉我这样做有什么好处吗?在我看来,这导致的问题多于解决的问题:

  • 导致更多的流量/CPU 时间 - 生成 XML 肥皂请求/响应而不是直接连接到数据库
  • 难以调试 - 需要调试两个独立的项目,而不是一个

我猜这可能是出于安全考虑(演示机器暴露在互联网上,而数据层机器没有);但是,我看不出这比直接连接到数据库更安全:登录到数据库的帐户不应拥有比 Web 服务包装器更多的访问权限。

我错过了什么吗?

最佳答案

我认为背后的原因与将域和业务逻辑包装到存储过程中的原因相同。为在不同平台上运行的多个应用程序和客户端提供对数据的安全访问,同时在数据层执行数据完整性检查和其他规则。

这个想法实际上是有道理的,但实现的想法并不完美。如果数据层的流量很大,那么序列化和反序列化数据在性能和设备要求方面会产生巨大的成本。

关于architecture - 三层网络架构 : Are Layers on Separate Machines Beneficial?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1525771/

相关文章:

c# - 构建完整的 Web 服务、网站和 iPhone 应用程序

java - 保持数据库中的数据与水平刻度同步

python - 我应该在函数调用的最后一个参数之后添加一个逗号吗?

scala - Scala 方法 def 什么时候应该使用显式定义的返回类型?

c# - 创建可重用的 ASP.NET MVC 项目

node.js - 响应式(Reactive)后端/响应式(Reactive)服务器架构

c# - 首先在需要两者的 IEnumerable 上排序或删除全部?

javascript - 检查 JS 可选属性是否存在的最有效(或最风格)的方法?

java - 春袋鼠 : Trigger Action on Update – Best Practice

c# - 在 C#(或任何语言)中,你最喜欢的删除重复的方法是什么?