1. 总是将ServiceContract特性应用到接口上,而不是类上:
//避免
[ServiceContract]
class MyService
{
[OperationContract]
public voidMyMethod()
{}
}
//正确
[ServiceContract]
interface IMyContract
{
[OperationContract]
void MyMethod();
}
class MyService : IMyContract
{
public voidMyMethod()
{}
}
2. 服务契约要添加前缀I:
[ServiceContract]
interface IMyContract
{
[OperationContract]
void MyMethod();
}
3. 要避免准属性(Property-Like)操作:
//避免
[ServiceContract]
interface IMyContract
{
[OperationContract]
string GetName();
[OperationContract]
void SetName(stringname);
}
说明:所谓的“准属性”,就是你这个服务操作可以用属性来代替,即用数据契约而非服务契约。
[DataContract]
public class MyContract
{
privatestring m_getName;
[DataMember]
public string GetName
{
get
{
return m_getName;
}
set
{
m_getName = value;
}
}
}
4. 避免定义只有一个成员的契约。
5. 每个服务契约最好只定义3~5个成员。
6. 每个服务契约的成员不要超过20个。12个是可能的实际限定。