沃纳·沃格尔( Werner )有一个有趣的采访,其部分内容是亚马逊如何实现面向服务的体系结构:
对我们来说,面向服务意味着用操作数据的业务逻辑封装数据,通过发布的服务接口进行唯一的访问。不允许从服务外部直接访问数据库,服务之间也不允许数据共享。
我不明白这点。如果数据库已经可以被其他服务通过数据库适配器作为服务使用,为什么需要将数据库“包装”到某个层?亚马逊这么做是因为他们需要向第三方公开数据库,还是因为其他原因?
为什么“不允许直接访问数据库”?这样的架构决策有什么好处?
发布于 2012-06-23 22:10:12
不允许来自应用程序的“直接数据库访问”允许底层数据库,甚至模式更改,而不必更改客户端应用程序。
客户端只需编写到服务接口的代码,不需要知道数据是如何持久化的。
发布于 2012-06-23 22:16:35
我同意雷·图尔的观点。另一种情况是,拥有自己数据的服务成为唯一需要维护其完整性和正确使用的业务规则的地方。
在一个地方维护它,而不是强迫客户端重复这个逻辑。让东西干干净净。
https://softwareengineering.stackexchange.com/questions/154034
复制相似问题