将现有接口重新用作 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" 界面。
我有一个场景,我希望 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" 界面。