c# - 我是否违反了共同封闭原则(CCP)

标签 c# .net design-patterns package-design

我有包含以下 dll 的应用程序:

Web 项目 - MVC Web 应用程序

Wcf 服务 - Web 应用程序使用的服务。

模型 - Entity Framework 代码优先实体和 DbContext 对象。

现在,当我需要更改某些内容时,可以说是 wcf 服务中的功能,所以我更改了功能,但 web 也受到了影响,我需要再次添加服务引用并有时更改使用 wcf 服务和模型的代码变化...

正如中共所说:包装不应该有一个以上的理由来改变。如果在依赖于多个包的应用程序中发生更改,理想情况下我们只希望更改发生在一个包中,而不是在多个包中发生。 这有助于我们确定可能会更改的类,并出于相同的原因将它们打包在一起。如果这些类紧密耦合,请将它们放在同一个包中。

所以在我的设计中我违反了这个原则?如果有人能解释更好的设计,我会很高兴。

最佳答案

WCF 服务包含 WSDL 定义,它是使用其功能的契约,也为它定义了实体。您需要再次添加引用的一个可能原因是您正在更改此契约(Contract)。 欲了解更多信息,请查看此处: http://msdn.microsoft.com/en-us/library/aa738723(v=vs.110).aspx

关于c# - 我是否违反了共同封闭原则(CCP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25377998/

相关文章:

oop - 实现类似的用例看起来像代码重复

java - 使用 Java (Java EE/Java SE) 的数据库应用程序设计模式

c# - 多个 App.Config 文件

c# - 编写一个接受 lambda 表达式的方法

c# - 满足特定条件的 Array.BinarySearch

c# - Winform 应用程序中的进度条,递增进度条直到在数据库上执行查询

c# - 如何在 WinForms 中制作自动滚动的多行文本框?

java - 创建编译时未知的类的实例

c# - 如何使用 itextsharp 在 pdf 中仅设置表格的垂直线?

c# - IoC - 单一接口(interface)的多种实现支持