SOA架构数据访问

Rou*_*hof 5 architecture wcf soa data-access-layer

在我的SOA架构中,我有几个WCF服务.
我的所有服务都需要访问数据库.

我应该创建一个专门负责所有数据库访问的WCF服务吗?
或者,如果我的每个服务都有自己的数据库访问权限,这样可以吗?

在一个版本中,我只在一个服务中实例化了一个实体层,而所有其他服务都依赖于此服务.
在另一个实体中,实体层在我的每个服务中都是重复的.

第一个版本的主要缺点是引起耦合.
另一个版本的缺点是层重复,可能是SOA不好的做法?

那么,Stack Overflow的优秀人物是怎么回事?

kd7*_*kd7 6

我个人认为,如果您为所有数据库访问创建服务,那么多个服务依赖于一种服务,这种服务会破坏SOA的重点(即服务是自治的),正如您所阐述的那样.当你谈到层复制时,如果每个服务都有自己的数据要处理,那真的是重复.我意识到你可能有相同的方式与你的关系数据库进行交互,或者从OOA那天回来,你有一个公共类库,为你封装了数据访问.这是我与自己斗争的事情之一,但我发现每个服务都有自己的数据层没有问题.事实上,在Michele Bustamante的书(第1章 - 第8页)中 - 她实际上描述了这一点并添加了"服务封装业务组件和数据访问".如果您发现每个服务都有一个单独的DALC层.这是一个很好的问题.


Shi*_*iji 5

听起来好像你有几个服务但只有一个数据库.

如果这是正确的,那么您实际上没有纯SOA架构,因为服务不是独立的.(没有纯SOA架构没有任何问题,它通常是正确的选择)

添加额外的WCF层会使解决方案变得复杂和变慢.

我建议您创建一个包含所有数据访问权限的单个数据访问dll,并由每个WCF服务引用.这样你就没有任何重复的代码.由于您拥有单个数据库,因此数据库/数据层中的任何更改都需要在任何情况下重新部署所有服务.