C# 在不影响客户端的情况下更改WCF逻辑

C# 在不影响客户端的情况下更改WCF逻辑,c#,wcf,C#,Wcf,我是WCF的新手。所以,请容忍我 我有一个WCF服务,许多客户都使用它 示例:我有一个计算总和的服务,该服务由所有客户使用。现在我有一个客户希望提供折扣。我想更改服务以计算该特定客户的折扣,而不影响其他客户。如何实现这一点(我认为可以通过重载来实现。我需要重载以外的解决方案)。在我看来,这是重载函数的最佳解决方案 原因是,如果您包含诸如disunt之类的内容,那么您正在计算一个不同的结果 让我们在代码中这样说: public float Add(float nrOne, float nrTwo)

我是WCF的新手。所以,请容忍我

我有一个WCF服务,许多客户都使用它


示例:我有一个计算总和的服务,该服务由所有客户使用。现在我有一个客户希望提供折扣。我想更改服务以计算该特定客户的折扣,而不影响其他客户。如何实现这一点(我认为可以通过重载来实现。我需要重载以外的解决方案)。

在我看来,这是重载函数的最佳解决方案

原因是,如果您包含诸如disunt之类的内容,那么您正在计算一个不同的结果

让我们在代码中这样说:

public float Add(float nrOne, float nrTwo) {
  return nrOne + nrTwo;
}

public float Add(float nrOne, float nrTwo, float discount) {
  return nrOne + nrTwo - discount;
}
另一种方法是,编写第二个函数

 public float AddWithDiscount(float nrOne, float nrTwo, float discount) {
  return nrOne + nrTwo - discount;
}

因此,您的已授予折扣的客户机可以简单地调用该函数,而不是未授予折扣的客户机

我可以想到的另一个解决方案是使用可选参数

public float Add(float n1, float n2,float discount=0) {
 return n1 + n2-discount;
}

这样客户就不必改变他们的服务。只有希望使用折扣的客户端才能传递折扣参数。

创建新版本的服务,或使用仅此客户端使用的其他方法。不确定我是否理解这个问题,因为这似乎与WCF无关…如果折扣业务逻辑,为什么不依赖授权?例如,客户端Id WCF不支持重载。因为WSDL不支持重载。