了解数据合同和业务实体之间的区别

时间:2018-08-31 10:15:14

标签: c# .net wcf entity business-logic

我希望有人能帮助减轻我对WCF的困惑。我有WCF服务。我要做的第一件事是创建数据合同。假设我的数据合同是“客户”。我似乎了解数据合同。

现在,我不想使用消息合同,因此我直接使用名为GetCustomer的操作来创建服务合同... ICustomerService...。但是返回类型应该是什么?它应该是DataContracts.Customer的返回类型吗?在这里,我对业务实体和数据合同之间的区别感到困惑。三个问题:

  1. 数据合同不是业务实体吗?

  2. 假设我在BusinessLogic项目中确实有一个名为“ CustomerInformation”的客户业务实体。就ServiceContract项目而言,它对BusinessLogic项目一无所知,这使我相信,添加对业务逻辑项目的引用以使其能够看到业务实体不是正确的体系结构。我看到ServiceImplementation项目确实有业务逻辑参考。

  3. 如果我确实有一个CustomerInformation业务实体,它与我的DataContracts.Customer数据合同看起来不完全一样吗?

1 个答案:

答案 0 :(得分:2)

  1. 否,请参阅:https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/using-data 您的数据合同由定义外部环境如何将数据传递到您的服务的接口表示。您的业​​务实体是一个类,其中包含在BL层内部传递和处理的数据。
  2. 在许多情况下,服务实现都包含BL。如果您的服务实现位于单独的服务层中,则它可能仍与BL层共享实体。您不从服务合同项目中引用BL是正确的(并且有单独的合同项目是正确的。)
  3. 可能是的,它们可以具有完全相同的属性,但不必如此。您的业​​务实体可以具有仅用于内部处理的其他属性。