2

我发现无论何时创建图层/层,我都必须在一层之间进行翻译,这是否意味着它是一个紧密耦合的系统?如果我要更改业务逻辑,删除数据库中的字段等,我将不得不将所有层从数据库层更改为客户端前端?多层/多层系统等于紧耦合系统吗?

E.g.一种公开“数据合约”对象的Web服务,并将其转换为中间层中的某些“业务对象”,然后将其转换为数据层中适当的“ORM对象”。客户端调用Web服务,将数据合同转换为一些模型对象,等等...

既然在这两者之间有这么多的翻译,那么Web服务如何设计为松散耦合呢?如果有人能够分享他/她的观点,那就太好了。

由于

回答

3

翻译或映射是正交的,虽然有点相关,以松散耦合。

  • 如果从具体类型来具体类型映射紧密耦合
  • 如果从抽象类型到具体类型或周围的其他方法,所述映射是松耦合地图

换句话说,松耦合与编程到接口的概念有关,而不是映射。

如果应用程序中的图层通过具体类型相互通信,则它是紧密耦合的。在这种情况下,分层并不能提供太多的价值,你也可能建立了一个单一的应用程序。另一方面,如果一个图层通过接口与其他图层进行通信,那么这些图层将松散耦合,但映射通常仍然是必需的。

+0

如果从抽象类型映射到具体类型或其他方式,映射是松散耦合的。 我同意从接口的角度来看它松散耦合,但它仍然可以紧密地耦合到数据库表字段?例如,如果您删除表中的列,那么会发生什么?你需要改变接口和映射,也就是说,耦合?多层=多翻译并向上传播,维护增加,所以它仍然松散耦合? – Joshscorp 2010-01-08 13:28:58

+0

添加或删除数据(无论是在数据库中,还是作为.NET类型的成员)都将被视为合同变更。这可能会在松散耦合的系统中受到更多伤害,因为您需要在多个位置实施此更改,但另一方面,您也可以将自己与其他层中的更改隔离开来。这取决于你为什么介绍改变,但这不是我们通常从松散耦合的概念中理解的。 – 2010-01-08 13:40:00