我应该将服务属性应用于接口,应用于具体类,还是应用于两者



我正在实现一个。net WCF服务,我想为将来的版本控制应用一个命名空间。一位同事提到,我应该对接口和该接口的具体实现类应用几个属性,但我不清楚1)这是否正确,2)假设它是正确的,为什么在两个地方都应用这些属性是重要的。

[ServiceContract]
[ServiceBehavior(Namespace = Constants.NameSpace1_0)]
[WebService(Namespace = Constants.NameSpace1_0, Name = "MyService1_0")]
[WebServiceBindingAttribute(ConformsTo = System.Web.Services.WsiProfiles.BasicProfile1_1, EmitConformanceClaims = true)]
public interface IMyService
{
    [OperationContract]
    [OperationContract(Name = "MyMethod", Action = Constants.NameSpace1_0 + "/IMyService/MyMethod")]  
    string MyMethod(string phrase);
}
public class MyServiceConcrete : IMyService
{
    public string MyMethod(string phrase);
}
在这个例子中,我是否也应该将应用于接口的属性应用于实现MyService接口的具体类(及其方法)?我应该在两个地方应用相同的属性还是只在其中一个地方应用相同的属性,为什么?谢谢。

您只需要将服务属性应用到接口。接口,而且只有接口,被WCF用来定义API——实现总是实现所有接口成员,所以那里不需要属性。具体实现中的属性将被忽略。

最新更新