将现有接口重新用作 WCF 接口。合同装饰是否影响现有应用程序?有什么坏处吗?

Re-using an existing interface as a WCF Interface. Does contract decoration affect existing applications? Is there any harm?

我有一个场景,我希望 WCF 服务实现一个现有接口。

主要目标是让我们能够使用依赖注入,以便可以将实现作为 WCF 服务或本地程序集注入。

例如

现有界面

public interface IStuffDoer
{
   bool DoStuff(string parameter);
}

现在我需要一个 IStuffDoer 类型的 WCF 服务合同。我能想到的一个选项是

[ServiceContract]
public interface IStuffDoerService: IStuffDoer
{

}

但是请注意,现有接口的操作没有被 [ServiceContract][OperationContract] 属性修饰。


由于无法覆盖父接口方法签名,我唯一的选择(据我所知)是用 WCF 契约属性装饰原始接口,如下所示:

[ServiceContract]
public interface IStuffDoer
{
   [OperationContract]
   bool DoStuff(string parameter);
}

这样做有什么坏处吗?

对现有的非 WCF 应用程序或正在使用该协定的应用程序有何影响?

如果它以某种方式影响他们,我最好的选择是什么?

What is the impact on existing, non-WCF applications or that are making use of that contract?

没有影响。它仍然是相同的界面。属性本身不做任何事情。您可以用它们装饰您的界面,并仍然将其用作 "normal" 界面。