【问题标题】:Multi Tiers / Multi Layers system equals to a tightly coupled system?多层/多层系统等于紧耦合系统?
【发布时间】:2011-01-02 21:38:16
【问题描述】:

我发现每当我创建一个层/层时,我必须在一个层之间转换,这是否意味着它是一个紧密耦合的系统?如果我要更改业务逻辑,删除数据库中的字段等,我是否必须将所有层从数据库层更改为客户端前端?

例如一种 Web 服务,它公开一个“数据契约”对象,并在中间层将其转换为一些“业务对象”,然后在数据层将其转换为适当的“ORM 对象”。客户端调用网络服务,将数据契约转换为一些模型对象,等等......

既然中间有这么多的翻译,那么如何将 Web 服务设计成松散耦合的呢?如果有人能分享他/她的意见,那就太好了。

谢谢

【问题讨论】:

    标签: .net architecture domain-driven-design web-services loose-coupling


    【解决方案1】:

    平移或映射是正交的,虽然有些相关,但与松散耦合有关。

    • 如果您从具体类型映射到具体类型,则映射是紧密耦合的
    • 如果您从抽象类型映射到具体类型或相反,映射是松散耦合的

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

    如果应用程序中的层通过具体类型相互通信,则它是紧密耦合的。在这种情况下,分层并不能提供太多价值,您还不如构建一个单体应用程序。

    另一方面,如果一个层通过接口与其他层通信,则层将松散耦合,但通常仍需要映射。

    【讨论】:

    • 如果从抽象类型映射到具体类型或相反,映射是松散耦合的。我接受从界面的角度来看它是松散耦合的,但它仍然可以与数据库表字段紧密耦合?例如,如果您删除表中的一列,那么会发生什么?您需要更改接口和映射,也就是某种方式的耦合?多层 = 多次翻译并一直向上传播,维护增加,所以它仍然是松散耦合的吗?
    • 添加或删除数据(无论是在数据库中,还是作为.NET 类型上的成员)都将被视为合同变更。这在松散耦合的系统中可能会受到更大的伤害,因为您需要在多个地方实现此更改,但另一方面,您也可以将自己与其他层的更改隔离开来。这取决于您为什么要引入更改,但这不是我们通常从松散耦合概念中理解的。
    猜你喜欢
    • 1970-01-01
    • 2015-11-05
    • 2012-03-30
    • 2012-06-25
    • 2010-09-13
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    相关资源
    最近更新 更多