2

我有一个接口 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 中,则必须将参数作为类型字符串。

4

1 回答 1

0

除了代码可读性(如果您的客户必须查看您的界面源代码)之外,这些属性应该没有缺点。

任何感兴趣的人都可以读取这些属性(例如 WCF 框架),或者将被忽略。实际上,它们不会从任何实现类中可见(请参阅此问题)。

然而,在架构级别,考虑使用 2 个接口,一个用于 dll 引用客户端,一个用于 REST 客户端。它们可能一开始就相似,甚至可能共享相同的基本接口和实现,但是如果业务案例需要,您可以使它们相互转移。
此外,这使您可以在 WCF Web 应用程序项目中保留 WCF 属性填充接口,并在核心类库项目中保留干净的接口和实现。

于 2010-02-04T09:34:41.173 回答