0

我正在设计网络的各个部分。我目前对未来软件项目设计的想法:

DMZ 中的网络服务器。这个网络服务器有一个穿过防火墙的洞(在 sql 端口上)与 MSSQL 数据库对话,该数据库是所有数据管理的内部。

问题:与其在防火墙中设置一个孔来与数据库服务器通信,不如让一个内部 Web 服务器托管 DMZ 中的应用程序可以使用的 Web 服务,并在 Web 服务后面使用数据库逻辑(打了一个洞,只能与该网络服务器交谈。)

Web 服务实现将只允许在一个地方更新任何 API 更改——这就是我考虑它的原因——尽管它可能比直接数据库和查询访问要慢。

关于哪个更好的任何想法?

编辑:意识到除非我将所有应用程序/业务逻辑放在应用程序层中,否则我仍然需要在 sql 防火墙上打一个洞。由于我只想为 API 函数(影响所有应用程序的函数 - 例如“GetEmployeeByName”)添加一个层,我仍然需要从 DMZ 访问数据库......

倾向于最佳答案是:托管 Web 服务的内部 Web 服务 API 服务器 - 这些服务可由 DMZ 中的所有 Web 服务器或通过 DMZ 中的代理服务器使用。(因此只有一台服务器需要通过防火墙的 ssl 端口。)(当然所有内部服务器都可以访问。)

4

1 回答 1

2

关于三层架构何时是更好的模型有很多讨论(这里是一个)。您应该可以在 Google 上找到更多信息。

简短回答:如果您的目标是安全性和可扩展性,那么使用应用层服务可能会更好。在开发所有层级和层级时,请务必专注于深度防御。

长答案:这取决于您的需求。

编辑以响应您的编辑:如果这样做有意义的话,我建议您将大部分业务逻辑放在应用程序层中。您的网络服务器应该主要用于演示。不管你把业务逻辑放在哪里,你都应该把所有的数据访问放到服务中——Web层应该只和应用层对话。

是深入研究三层方面的开始搜索。 是关于分层和诸如此类的一个不错的介绍。

于 2012-11-16T21:02:17.393 回答