我有一个接口ICustomerService:
public interface ICustomerService
{
CustomerList FindAll();
}
和实现该接口的具体类。现在我需要使用wcf / rest在Web上公开该方法,我必须将接口定义更改为:
[ServiceContract]
public interface ICustomerService
{
[OperationContract]
[WebInvoke(
Method = "GET",
UriTemplate = "Customers")]
CustomerList FindAll();
}
我的问题是,如果客户端想要使用dll引用而不是使用其余的api来使用实现,那么将这些属性附加到接口是否有任何缺点?我知道使用REST的缺点就像在uri中将参数作为类型字符串一样。
答案 0 :(得分:0)
除了代码可读性之外,属性应该没有缺点(如果你的客户必须查看你的界面来源)。
任何感兴趣的人(如WCF框架)都可以读取属性,或者将忽略这些属性。实际上,任何实施课程都无法看到它们(见this question)。
但在架构级别,请考虑使用2个接口,一个用于dll引用客户端,另一个用于REST客户端。它们可能与开头类似,它们甚至可能共享相同的基本接口和实现,但如果业务案例需要,您可以使它们相互转移。
此外,这使您可以在WCF Web应用程序项目中保留WCF属性填充接口,并在核心类库项目中保持干净的接口和实现。