我正在寻找一个"十大"列表,列出我们应该通过Web服务连接到远程数据库而不是直接连接到数据库的原因.这是现在的内部辩论,我是亲网络服务但却失去了争论.我对WCF/Web服务有基本的把握,没有其他人可以做到.我们可以做任何我们想要的事情,但我们需要坚持我们现在选择的任何东西.
这就是我想出来的.还有吗?
DVK*_*DVK 111
安全.除了Web服务器/应用程序用户之外,您不会向任何人授予数据库访问权限.
当您拥有大量用户时,这一点非常重要.您可以避免DB端用户/角色维护的痛苦.
DB负载减少.Web服务可以缓存从DB检索的数据.
数据库连接池(hat/tip @Dogs).
Web服务可以使用一小段永久打开的数据库连接.有多种方式的帮助:
数据库服务器端的数据库连接池是有限的.
打开新的数据库连接是非常昂贵的(特别是对数据库服务器).
容错能力 - 服务可以在主/ DR数据源之间切换,而不必由服务使用者实现故障转移的细节.
可伸缩性 - 服务可以在多个并行数据源之间传播请求,而无需服务使用者实现资源选择的细节.
封装.您可以更改基础数据库实施,而不会影响服务用户.
数据丰富(包括从客户端定制到本地化到内部化的任何内容).基本上任何这些都可能是有用的,但它们中的任何一个都是数据库的主要负载,并且通常很难在数据库中实现.
可能或可能不适用于您 - 某些架构决策不是DB访问友好的.例如,在Unix上运行的Java服务器可以轻松访问数据库,而在Windows PC上运行的Java客户端不具备数据库感知能力,也不是您想要的.
可移植性.您的客户可能并非全部使用相同的平台/架构/语言.在每个中重新创建一个良好的数据访问层比为Web服务构建消费者层更难(因为它必须考虑上述故障转移/等等问题).
性能调整.假设替代方案是客户端运行自己的查询(而不是预先存储的预处理过程),您可以100%确定他们将开始使用不太理想的查询.此外,如果Web服务绑定了一组允许的查询,它可以显着帮助您进行数据库调优.我必须补充一点,这种逻辑同样适用于存储过程,而不是Web服务所特有的.
在这个页面上也可以找到一个好的列表:'封装数据库访问:敏捷"最佳"实践"
简而言之 - 其中一些问题可能并不适用于所有情况.有些人不关心便携性.有些人不需要担心数据库安全性.有些人不需要担心数据库可扩展性.
Joh*_*ers 14
在我看来,您不应该自动将您的数据库公开为Web服务.如果事实证明您需要一个服务来公开您的数据,那么写一个,但不是所有数据库访问都应该通过Web服务完成.
bra*_*ter 11
大多数这些要点适用于任何正式的API,而不是特定的Web服务.
| 归档时间: |
|
| 查看次数: |
68135 次 |
| 最近记录: |