2011-12-19 131 views
0

我将以下面的情况为例。公司开发部署在客户端的组件A(该组件位于客户端区域,该客户端可能不被公司信任)。组件需要访问存储在位于公司区域(可信区域)的数据库服务器中的数据。该公司开发的核心模块之一是数据模型,使用Hibernate作为ORM。直接访问数据库与间接访问数据库

一种方法是组件A直接依赖数据模型模块并直接访问数据库(通过Hibernate)。第二种方法是间接访问数据库,使用连接组件A和数据库服务器的中间模块。

将组件直接连接到数据库服务器可能会出现哪些问题?使用API​​的优点是什么?你有什么建议?

谢谢

回答

2

第二种方法通常称为3层或n层架构。它们之间的许多优点是可扩展性(通过在许多服务器甚至云上分发API模块),缓存,集中式更新和版本管理,安全等。在许多公司中,数据库受到客户端机器的防火墙限制,甚至无法连接到它。
这个问题是更复杂的系统,更多的组件开发和支持等。你应该谷歌在N层架构的更多细节,并判断它是否适合你。

+0

我知道多层架构的存在,但对我来说似乎不同,因为这里并不意味着单个物理机器。你认为数据访问层必须分发给客户端吗?通常,数据访问层直接访问数据库(有时通过ORM工具),但直接从客户端访问数据库(使用数据访问层)会让我认为可能会出现安全问题。 – 2011-12-19 10:00:26

+0

如果客户端机器不受您的控制,并且客户端计算机可以直接连接数据库,则安全性可能会受到影响。 API模块(即使它处于与客户端应用程序不同的进程中)可能会被篡改,反向设计等。使用N层体系结构,可以使用访问数据库的API层,并且客户端只能使用API​​层访问一个定义良好的API,适当的安全性可能审计,让它只执行明确定义的行为,没有什么比这更少的了。 DAL将成为您的API层的实现细节。 – softveda 2011-12-19 10:57:09

+0

顺便说一句当我说API时,我的意思是某种形式的远程API使用低层传输,比如套接字,RMI/.Net远程处理,或者更高级别的SOAP,REST等。 – softveda 2011-12-19 10:59:39